我在eclipse中收到了代码中@SuppressWarnings
注释的编译器警告:
@Override
public boolean doSomething(@SuppressWarnings("unused") String whatever) throws AnException {
throw new AnException("I'm still in bed and can't do anything until I've had a shower!");
}
在“未使用”一词下看起来像是一个黄色的波浪线,在鼠标悬停时,我得到了工具提示Unnecessary @SuppressWarnings("unused")
。
我认为另一位开发人员被提示通过eclipse输入这些注释,我基本上被提示将它们删除。如何配置eclipse以提示我将@SuppressWarnings
注释放入其中而不是抱怨它?
如果有人想在这里评论最佳做法,那么这也是最受欢迎的。
答案 0 :(得分:51)
在您的问题的代码中,@SuppressWarnings("unused")
注释是不必要的,因为该方法要么覆盖超类中的另一个方法,要么实现接口。即使你实际上没有使用whatever
参数,也必须声明它,否则@Override
注释会产生错误(如果你删除了参数,你将改变被覆盖方法的签名。)
在某些旧版本的Eclipse中,显示的代码不会引起警告,但在最近的版本中它会发出警告。我相信这是一个有效的警告,我宁愿在这种情况下删除@SuppressWarnings("unused")
。
答案 1 :(得分:23)
转到
窗口→偏好设置→ Java →编译器→错误/警告→ 注解
为 未使用'@ SuppressWarnings`令牌 选择 忽略 。
答案 2 :(得分:5)
或者,如果您认为删除SuppressWarnings注释更为正确:
窗口 - >偏好 - > Java - >编译器 - >错误/警告 - >不必要的代码 - >参数值未使用
并选择在覆盖和实施方法时忽略
答案 3 :(得分:5)
在我的代码中,没有继承用@SuppressWarnings定义3个方法(“未使用”)
此代码在Eclipse Juno(最新版本)中提供了“不必要的@SuppressWarnings(”unused“)”,但如果我删除@SuppressWarnings(“unused”),我会在IntelliJ中收到“Constructor / Method is never used”警告IDEA 11.1.3
这些方法不直接用于项目,只有第三方产品Jackson,JAXB& GSON,所以IntelliJ是对的,我会说...
public class EmailUnsendable extends SkjemaError {
private NestedCommand command; // Can't be Command (interface) because of GSON!
@SuppressWarnings("unused") // Used by Jackson/JAXB/GSON
public EmailUnsendable() {
}
public EmailUnsendable(String referenceNumber, String stackTrace, NestedCommand command) {
super(referenceNumber, stackTrace);
this.command = command;
}
@SuppressWarnings("unused") // Used by Jackson/JAXB/GSON
public NestedCommand getCommand() {
return command;
}
@SuppressWarnings("unused") // Used by Jackson/JAXB/GSON
public void setCommand(NestedCommand command) {
this.command = command;
}
}
我相信这是Eclipse中的一个错误。