组合多个@SuppressWarnings批注-Eclipse Indigo


149

因此,问题在于能够组合多个警告抑制,以便每个项目都不需要它自己的@SuppressWarnings注释。

因此,例如:

public class Example
    public Example() {
        GO go = new GO();  // unused
        ....
        List<String> list = ( List<String> ) go.getList(); // unchecked
    }
    ...
    // getters/setters/other methods
}

现在,@SuppressWarnings我不想在班级针对这两个警告设置两个警告,而是这样:

@SuppressWarnings( "unused", "unchecked" )
public class Example
    public Example() {
        GO go = new GO();  // unused - suppressed
        ....
        List<String> list = ( List<String> ) go.getList(); // unchecked - suppressed
    }
    ...
    // getters/setters/other methods
}

但这不是有效的语法,有没有办法做到这一点?


@SuppressWarnings(“ unused”,“ unchecked”)不起作用,请将其修改为@SuppressWarnings({“” unused“,” unchecked“})
Raj

Answers:


304

使用以下内容: @SuppressWarnings({"unused", "unchecked"})


这是Eclipse中所有注释的常规约定吗?
已知的方式

1
否。这是用于列表参数的。使用SDK运行Eclipse时(或附加Java源代码时),您只需在任何批注上按F3即可查看其源声明,从而还可以查看它需要多少个(和哪个)参数。
Bananeweizen 2012年

8
那将是一个数组,如中所示String[] value()。列表在Java中没有特殊的语法,但是可以使用花括号来定义数组。
Maarten Bodewes,2014年

14

如果您查看注释内部,您将看到以下内容:

public @interface SuppressWarnings {
    String[] value();
}

如您所见,value参数是一个字符串数组...因此注释中的参数可以是: value1,value2或value3 ,其中

final String[] value1 = { "a1" };
final String[] value2 = { "a1", "a2" };
final String[] value3 = { "a1", "a2", "a3" };

即:

@SuppressWarnings({"unused"})
@SuppressWarnings({"unused", "javadoc"})

你看不到像

@SuppressWarnings("unused") 

这是一种特殊情况,允许一个元素不带“ {}

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.