我有以下代码:
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();
前面看到指向“new”的指针(^)。
有人知道这里发生了什么吗?
答案 0 :(得分:9)
是的,你正在创建一个新的HashSet而不说明它应该包含哪个类,然后断言它包含字符串。将其更改为
Set<String> tmpSet = new HashSet<String>();
答案 1 :(得分: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