如何避免使用@SuppressWarnings?

时间:2012-04-03 16:23:51

标签: java eclipse weka suppress-warnings

我在Eclipse Indigo项目中使用名为Weka的开源Java库。该库似乎有点过时,因此Eclipse向我展示了数千条关于其代码的警告。一个典型的例子是:

  

ArrayList是原始类型。对泛型类型ArrayList< E>的引用。   应该参数化

参考这样的一行:

ArrayList t = new ArrayList();

Eclipse的快速修复表明我可以将上面的代码转换为使用泛型,或者我可以添加 @SuppressWarnings'rawtypes'注释作为修复。

但是这两个修复都涉及对开源项目的代码进行更改,而且我必须进行几次(几百次)的更改。

相反,可能有一些Eclipse(或Java编译器?)的全局设置,我可以指出我不想收到特定项目的警告吗?

4 个答案:

答案 0 :(得分:4)

窗口>偏好> Java>编译器>错误/警告>通用类型。或者,可以逐个项目地设置(如果您希望保持相同的工作区中有其他项目),右键单击项目>属性> Java>错误/警告>选中“启用项目特定设置”,然后像以前一样。

答案 1 :(得分:1)

尝试Window->偏好设置,Java->编译器>错误/警告。我看到有"通用类型"底部附近。我不知道这是否正是您正在寻找的,但根据我的经验,这是忽略特定Eclipse警告的好地方。

答案 2 :(得分:1)

在Eclipse中导航到Window-> Preferences-> Java-> Compiler-> Errors / Warnings-> Generic类型,您可以在这里找到“原始类型的使用”类别,您可以将其设置为忽略而不是警告。

答案 3 :(得分:1)

有人建议你只需通过Window>关闭“违规”警告即可。首选项,但它会关闭工作区中的所有项目,包括包含您自己的Java 1.5 +代码的项目。这是一个坏主意,“因为如果它们出现在您的代码中,您应该注意警告。 (如果忽略它们,则可能会出现意外的运行时异常。)

另一种可能性是更改项目设置以将Java编译器的源级别设置为Java 1.4或更早版本。您应该在Weka项目上执行此操作。包含代码的项目需要使用至少Java 1.5的源级别......假设您使用的是泛型。


  

感谢。当我将项目部署到运行JRE 1.6的生产服务器时,这可能不会导致问题吗?我不也必须在那里出现JRE 1.4吗?

不......原因有两个:

  • 除非您正在修改Weka,否则您可以使用原始JAR并忽略Eclipse创建的任何构建工件。

  • 源级别和目标级别不同。源级别说明源代码必须遵循的Java语言版本。目标级别说明应该使用什么版本的类文件格式。您可以让Java编译器为Java 1.4源代码生成Java 1.6字节码格式。 (但反之亦然)。

  • Java 1.6 JRE很乐意运行Java 1.4 JAR。

  

另外,我在哪里这样做?你的意思是Project>属性> Java编译器>编译器合规级别?

是。请注意,它允许您独立指定源和目标级别...模块化Java编译器仅允许某些组合的约束。