声纳:lambda-移除语句周围无用的花括号

声纳:lambda-移除语句周围无用的花括号,lambda,java-8,sonarqube,Lambda,Java 8,Sonarqube,以下代码示例: import java.util.Observer; public class Main { public static void main(String[] args) { Observer observer = (o, arg) -> { if (arg != null) { System.out.println(arg); } }; } }

以下代码示例:

import java.util.Observer;

public class Main {
    public static void main(String[] args) {
        Observer observer = (o, arg) -> {
            if (arg != null) {
                System.out.println(arg);
            }
        };
    }
}

不符合以下要求:

只包含一条语句的lamdba不应嵌套此语句 在块中:删除语句周围无用的大括号


我怎样才能修复它?

将这些花括号归类为“无用”是错误的

可以省略单个表达式语句周围的大括号,例如,方法调用、
new
表达式或
x++
x+=y

或者,您可以将唯一的
..->{return x;}
语句转换为表达式
..->x

但你不能在每一条语句中省略大括号

你不能解决这个问题。你唯一能做的就是提交一份bug报告


顺便说一句,即使这样,删除它们也不一定能提高可读性。这取决于……

回答得很好,我将在这里添加错误报告:谢谢。似乎您的错误不在那里-正确的问题在这里
import java.util.Observer;

public class Main {
    public static void main(String[] args) {
        Observer observer = (o, arg) -> {
            try {
                String test = (String) arg;
                ...
            }
            catch (ClassCastException e) {
            }
        };
    }
}