2017-10-01 11 views
0

私が書いたコードに問題があります。それは私のMac上で正常にコンパイルされます(Java 8 Update 121ビルド1.8.0、Nanoテキストエディタ、JavaコマンドラインコンパイラjavacとJavaのみ)が、別のマシンで何らかの理由でコンパイルされません。他のマシンで1台のマシンでコンパイルされ、別のマシンではコンパイルされないJavaコード

、問題は次の行から茎:

public class SomeClass { 
... 
public static HashMap<String, ArrayList<HashSet<String>>> conversationRecord = new HashMap<>(); 
... 
public static someMethod() { 
... 
//This produces errors 
conversationRecord.put(uuid, new ArrayList<>()); 
conversationRecord.get(uuid).add(0, new HashSet<>()); 
conversationRecord.get(uuid).add(1, new HashSet<>()); 
}//end method 
}//end class 

エラーは、次のように読み取ります

java:279: error: no suitable method found for put(String,ArrayList<Object>) 
conversationRecord.put(uuid, new ArrayList<>()); 
^ 
method HashMap.put(String,ArrayList<HashSet<String>>) is not applicable 
(actual argument ArrayList<Object> cannot be converted to ArrayList<HashSet<String>> by method invocation conversion) 
method AbstractMap.put(String,ArrayList<HashSet<String>>) is not applicable 
(actual argument ArrayList<Object> cannot be converted to ArrayList<HashSet<String>> 

上記のコードは、時間の私のMacは100%にコンパイルし、別のマシンではまったくコンパイルされません。

これはなぜ起こっているのかについての洞察はありますか?

conversationRecord.put(uuid, new ArrayList<>()); 

しかし、上:(脇:彼らはJavaプログラムをコンパイルし、実行している以外にも、私は他の人のセットアップについては何も知らない)

+6

両方のマシンでjava -versionを実行し、メジャーバージョンが他のマシンに同じ –

+0

がインストールされているかどうかを確認してください。 – Eftakhar

+1

これはエラーメッセージの完全なセットですか?早く失敗するものが原因であるようです。 –

答えて

1

コードを以下の許可型推論状況について.theのjdk8のように思えます以前のバージョン、さらにjdk7、上記のコードは許可されていません。他のマシンがjdk8またはそれ以降であることを確認してください。もちろん

、あなたはこのようなあなたのコードを変更することができます。type inferenceの詳細については

ArrayList<HashSet<String>> temp=new ArrayList<>(); 
conversationRecord.put(uuid, temp); 

を。

関連する問題