5

次のコードがあります。

private static final Set<String> allowedParameters;
static {
    Set<String> tmpSet = new HashSet();
    tmpSet.add("aaa");
    allowedParameters = Collections.unmodifiableSet(tmpSet);
}

そしてそれは以下を引き起こします:

Note: mygame/Game.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

そして、提案されたオプションで再コンパイルすると、HashSet();.

ここで何が起こっているか知っている人はいますか?

4

2 に答える 2

9

はい、どのクラスを含める必要があるかを指定せずに新しい HashSet を作成し、文字列が含まれていることを主張しています。に変更します

 Set<String> tmpSet = new HashSet<String>();
于 2010-03-10T17:51:55.313 に答える
2

これらのメッセージは、J2SE 1.5 の新しい機能であるジェネリックをサポートするクラスを使用している場合に発生します。コレクションのコンテンツのタイプを明示的に指定しない場合に取得します。

例えば:

List l = new ArrayList();
list.add("String");
list.add(55);

単一のデータ型のコレクションが必要な場合は、次の方法でメッセージを削除できます。

List<String> l = new ArrayList<String>();
list.add("String");

複数のデータ型を一度のコレクションに入れる必要がある場合は、次のようにします。

List<Object> l = new ArrayList<Object>();
list.add("String");
list.add(55);

-Xlint:unchecked パラメーターをコンパイラーに追加すると、問題に関する具体的な詳細が得られます。

詳細については、http: //forums.sun.com/thread.jspa?threadID=584311を参照してください。

于 2010-03-10T17:53:13.717 に答える