我正在想办法该怎么做
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")
以及其他人。将注释放在周围的 block /方法/类级别上是可行的,但它的影响比我想要的更大 - 这是一个有效的解决方法,但没有回答问题。
最佳答案
最好的选择是修复代码 sl,使其不会触发警告(只需声明
List<String> list = new LinkedList<>();
如果出于任何原因不能或不想这样做:在您的场景中,您可以在有问题的局部变量声明之前添加注释:
Executors.newSingleThreadExecutor().submit(() -> {
@SuppressWarnings("unchecked")
List list = new LinkedList();
list.add("some string");
});
我能想到的唯一的另一种选择是将注释放在周围的类级别(所有这些代码都添加到的级别)。但我强烈反对它,你应该希望在同类的其他地方收到此类警告。
关于java - 在涉及 Runnable lambda 作为参数的单行代码中,应将 @SuppressWarnings 放在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45470841/