1

收到警告的代码:

HashSet<MyBean> beanies = StatusUtil.getStatus(myBeanList);

它调用的方法:

public static HashSet<MyBean> getStatus(List<MyBean> servers){      
   HashSet<MyBean> set = new HashSet<MyBean>();
   return set;
}

是的,这是 Eclipse 中的确切代码。我意识到这不是大量信息,但在我看来,代码不应该产生警告。如果有帮助,那就是 Eclipse Indigo。清理项目没有任何作用。重新启动 Eclipse 什么也不做。

编辑:我最初应该注意到 Eclipse 实际上说“类型的表达式HashSet需要未经检查的转换才能符合HashSet<MyBean>”。所以它似乎意识到该方法被定义为 HashSet 但没有意识到我的返回变量也是如此......

4

1 回答 1

1

这似乎是由于 Eclipse Indigo 错误造成的。该错误在 Eclipse 中首次出现,我将默认工作区设置切换为使用 Java 7 作为编译器。我删除了所有其他可能的 Java 编译器,这将强制所有项目使用 Java 7。这可以在Project->Properties->Java Compiler. 有一个链接显示 Configure Workspace Settings。此时所有的单个项目都完成了说“合规水平”是 1.7,这是我的预期。但是,在我检查“启用项目特定设置”并将其设置为 Java 7 之前,我的答案中所述的错误并没有消失。在我看来,这是一个错误,因为如果只有一个可用的编译器我设置为我的工作区默认值编译器,而我的项目没有启用项目特定设置,那么显然它应该使用该编译器。但是,启用项目特定设置使我上面描述的警告消息消失了。

于 2013-04-16T16:33:45.340 回答