我用过 @SuppressWarnings("unchecked")
喜欢:
class SomeClass {
public static void main(String [] args) {
Vector v = new Vector();
@SuppressWarnings("unchecked")
v.addElement(new Integer(1_000_000));
// ...
在使用 javac 8.0 版进行编译时,出现以下错误:
error: <identifier> expected
v.addElement(new Integer(1_000_000));
插入符号 (^) 指向
addElement
的左括号方法和另一条错误消息,提示缺少分号 (;)。第二条消息在 addElement
的右括号附近显示了插入符号.但是,当我移动
@SuppressWarnings("unchecked")
时上方class SomeClass{
, 行,如:@SuppressWarnings("unchecked")
class SomeClass {
两个错误消息都会自动消失。这让我不知所措。是
@SuppressWarnings("unchecked")
的定位这么挑剔?
最佳答案
您不得放置类似 @SuppressWarnings("unchecked")
的注释。在声明上,但仅在声明上。
这就是编译器不理解第一个变体的原因:
@SuppressWarnings("unchecked")
v.addElement(new Integer(1_000_000));
这在那里是非法的,编译器不会理解它。
如果你想缩小范围,你可以把它放在方法上:
@SuppressWarnings("unchecked")
public static void main(String [] args) {
Vector v = new Vector();
v.addElement(new Integer(1_000_000));
因此,只有
main
的警告方法将被忽略,但不会被整个类忽略。你甚至可以把它放在变量声明上,但永远不要放在语句上:
@SuppressWarnings("unchecked")
Vector v = new Vector();
然而,正如 GhostCat 所指出的,在这种情况下,最好只对 vector 进行泛化而不是忽略警告。
关于java - @SuppressWarnings ("unchecked") 的位置是否重要?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39366263/