java - 在涉及 Runnable lambda 作为参数的单行代码中,应将 @SuppressWarnings 放在哪里?

标签 java lambda

我正在想办法该怎么做

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/

相关文章:

java - 为什么 SelectOneMenu 会忽略转换器?

java - 在没有 API 网关的情况下处理 https 请求

java - 从 Java 程序调用 Kotlin 时找不到 kotlin-reflection.jar

c# - 将两个 lambda 与表达式相乘

java - 检查下一个数组元素是否与Java中的当前元素不同

java - 在 play 2.0 中加载 initial-data.yml 时出现问题

c++ - 为什么 Visual Studio 在没有优化的情况下可以正确编译此函数,但在优化时却编译错误?

python - 如何创建一个字典,其中函数将名称打印为值

Java 8 - 流 - 过滤器中的方法有未处理的异常,try catch 期待返回语句

java - 使用 lambda 表达式求和成员变量?