以下是代码段:
class MyClass {
private native void foo();
}
对于上述情况,Eclipse(即3.7.0)发出警告
MyClass类型的方法foo()从不在本地使用
好吧,但是当我试图压制警告时:
class MyClass {
@SuppressWarnings("unused")
private native void foo();
}
抱怨
不受欢迎的@SuppressWarnings(“未使用”)
那么,有没有办法让它停止抱怨?
更新
抱歉信息不完整 - 此警告仅显示在AspectJ项目中。一旦我创建了一个简单的Java项目并将我的类放入其中,一切正常。
据我了解,AspectJ使用自己的编译器,因此必须由它生成此警告。我正在使用AspectJ Development Tools插件:
Version: 2.1.3.e37x-20110628-1900
AspectJ version: 1.6.12.20110613132200
答案 0 :(得分:2)
@SuppressWarnings
列表是特定于编译器的。在Eclipse中,
unused 是unusedArgument,unusedImport,unusedLabel,unusedLocal,unusedPrivate和unusedThrown
的宏整个列表在这里:the list of valid @SuppressWarnings supported in Eclipse
答案 1 :(得分:1)
在Java项目中,这不会产生任何警告:
class MyClass {
private native void foo();
}
然而,这会产生Unnecessary @SuppressWarnings("unused")
警告:
class MyClass {
@SuppressWarnings("unused")
private native void foo();
}
在AspectJ项目中,第一个示例生成The method foo() from the type MyClass is never used locally
警告,第二个示例生成与Java项目中相同的警告。这可能是一个AspectJ错误。我建议在AspectJ bugzilla上提出一个问题。
https://bugs.eclipse.org/bugs/
AspectJ编译器是Eclipse 3.3中JDT编译器的一个分支。所以,这个bug很可能最初是在Eclipse 3.3中。现在Java 7已经可用,AspectJ可能会迁移到基于Eclipse 3.7或3.8,它将从JDT编译器中获取修复。但无论如何都值得提出一个错误。
答案 2 :(得分:0)
我刚试过,但没有得到“不必要的......”警告。您确定警告是由java编译器发出的,而不是由checkstyle或findbugs等其他工具发出的吗?
无论如何,在很少的情况下,未使用的私有方法是有意义的。
答案 3 :(得分:0)
这对我有用。我正在像你一样运行Eclipse Indigo。