声纳:lambda - 在声明周围删除无用的花括号

gon*_*ard 5 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);
            }
        };
    }
}
Run Code Online (Sandbox Code Playgroud)
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) {
            }
        };
    }
}
Run Code Online (Sandbox Code Playgroud)

不符合这个声纳规则:

只包含一个语句的Lamdbas不应该在一个块中嵌套这个语句:删除语句周围无用的花括号

我该怎么办呢?

Hol*_*ger 8

将这些花括号分类为"无用"是错误的.

您可以省略围绕一个大括号表达式语句,即,例如,一个方法调用,一个new表情,或者x++,x+=y

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

但是你不能在每个语句周围省略花括号.

你无法解决这个问题.您唯一能做的就是提交错误报告.

顺便说一下,即使这样,删除它们也不一定是可读性改进.这取决于…