我想弄明白怎么做
Executors.newSingleThreadExecutor().submit(new Runnable() {
@Override
@SuppressWarnings("unchecked")
public void run() {
List list = new LinkedList();
list.add("some string"); //without
//`@SuppressWarnings("unchecked")` javac warns about
//`[path to file].java: [path to file].java uses unchecked or unsafe operations.`
}
});
@SuppressWarnings("unchecked")
Runnable runnableJava8 = () -> {
List list = new LinkedList();
list.add("some string");
};
Executors.newSingleThreadExecutor().submit(runnableJava8);
在一行中,例如
@SuppressWarnings("unchecked") //where to put this??
Executors.newSingleThreadExecutor().submit(() -> {
List list = new LinkedList();
list.add("some string");
});
会导致<identifier> expected
以及@SuppressWarnings
或()
之前的{}
。
我不想修改代码以避免警告,我也希望能够使用@SuppressWarnings("PMD.AvoidThrowingRawExceptionTypes")
和其他人。将注释放在周围的块/方法/类级别上有效,但它比我想要的更具影响力 - 它是一个有效的解决方法,但没有回答问题。
答案 0 :(得分:3)
最好的选择就是修复代码sl,它不会触发警告(只需声明
)List<String> list = new LinkedList<>();
如果由于任何原因无法或不想这样做:在您的方案中,您可以在违规的本地变量声明之前添加注释:
Executors.newSingleThreadExecutor().submit(() -> {
@SuppressWarnings("unchecked")
List list = new LinkedList();
list.add("some string");
});
我能想到的唯一另一种选择是将注释放在周围的类级别(添加所有这些代码的那个)。但是我强烈反对它,你应该想要在同一类别的其他地方警告这种警告。
答案 1 :(得分:2)
简单。编写不产生警告的代码。
Runnable runnableJava8 = () -> {
List<String> list = new LinkedList<>();
list.add("some string");
};
答案 2 :(得分:0)
您可以在较高级别禁止警告。
在函数或类定义之前添加@SuppressWarnings("unchecked")
以在整个过程中应用抑制。
@SuppressWarnings("unchecked") // Here
public class NewMain {
@SuppressWarnings("unchecked") // Or here
public static void main(String[] args) {