2014-06-23 26 views
4

这些代码示例:声纳:拉姆达 - 各地语句中移除无用的花括号

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) -> { 
      try { 
       String test = (String) arg; 
       ... 
      } 
      catch (ClassCastException e) { 
      } 
     }; 
    } 
} 

是不符合此sonarqube rule:只包含一个声明

Lamdbas不应该巢在一个块中的这个陈述 :删除无用的大括号陈述

我该如何解决?

回答

7

这些大括号分类为“无用”是错误的。

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

或者你可以将一个唯一… -> { return x; }声明成表达式… -> x

但是你不能在每一条语句中省略花括号。

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

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

+0

好的答案,我只是在这里添加错误报告:https://jira.codehaus.org/browse/SONARJAVA-552谢谢。 – benzonico