2013-04-12 26 views
1

是得到警告代码:Eclipse和未检查转换警告,不应该存在

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,但没有意识到,我的返回变量也是如此......

+5

“myBeanList”的定义类型是什么? – NilsH

+0

你的代码似乎没有警告http://ideone.com/2LVUOD。我们需要更多信息来解决您的问题。 – Pshemo

+0

@Pshemo你可能假设'myBeanList'是一个'List '。我认为NilsH已经击中了头部。 –

回答

1

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