Java 在声明部分使用@SuppressWarnings(“未使用的”)注释
我有一个关于Java 在声明部分使用@SuppressWarnings(“未使用的”)注释,java,Java,我有一个关于@SuppressWarnings(“unused”)注释的基本问题。基本上,我希望在我的类的声明部分中抑制代码块上未使用的警告。我不希望在整个类中抑制未使用的警告 目前,我正在这样做: public class MyClass { //Constants private final String ACCEPT = "Yes"; @SuppressWarnings("unused") private final String DENY = "No";
@SuppressWarnings(“unused”)
注释的基本问题。基本上,我希望在我的类的声明部分中抑制代码块上未使用的警告。我不希望在整个类中抑制未使用的警告
目前,我正在这样做:
public class MyClass {
//Constants
private final String ACCEPT = "Yes";
@SuppressWarnings("unused")
private final String DENY = "No"; //Not currently used
private final String TENTATIVE = "Maybe";
@SuppressWarnings("unused")
private final String POSTPONE = "Later"; //Not currently used
//Variables
private int counter;
....
我发现上面的代码有点混乱,注释是这样随机抛出的。我想做的是:
//Constants
@SuppressWarnings("unused")
{
private final String ACCEPT = "Yes";
private final String DENY = "No"; //Not currently used
private final String TENTATIVE = "Maybe";
private final String POSTPONE = "Later"; //Not currently used
}
//Variables
private int counter;
....
当然,这在Java中是非法的,因为块不能像这样简单地生成。这不是什么大不了的事,但我很好奇我是否错过了一个明显而优雅的解决方案。如果你真的想保留所有未使用的常量,那么一个快速而肮脏的技巧就是
public class MyClass {
//Variables
private int counter;
@SuppressWarnings("unused")
private static final class UnusedConstants{
private final String ACCEPT = "Yes";
private final String DENY = "No";
private final String TENTATIVE = "Maybe";
private final String POSTPONE = "Later";
}
}
我也会让它们静止,但是你的电话
编辑:
或者,我认为更好的是:
public class MyClass {
private enum Answer {
ACCEPT ("Yes"),
DENY ("No"),
TENTATIVE("Maybe"),
POSTPONE("Later");
private final String answer;
private Answer(String answer) {
this.answer = answer;
}
public String toString() {
return answer;
}
}
}
这样,只要至少使用其中一个值,就不会得到未使用的警告。没有将其设置为静态的任何特定原因。这一点很好。我可以让它们静止。我只是举个例子。然而,我的编译器仍然会在未使用的静态字段中抛出警告。我认为这与我要寻找的差不多。插入未使用的常量的原因是为了可读性以及它们将在遥远的将来使用这一事实。我不确定这是否会提高可读性,但它告诉我也许应该将常量重新定位到一个专用的常量类中。这可能是最好的设计决策。谢谢啊,我喜欢这个解决方案。当然更干净。