【问题标题】:Sonar : Anonymous inner classes containing only one method should become lambdas声纳:只包含一种方法的匿名内部类应该成为 lambdas
【发布时间】:2014-07-17 16:44:39
【问题描述】:

这些代码示例:

public abstract class Main {

    public abstract void myMethod();

    public static void main(String[] args) {
        Main main = new Main() {

            @Override
            public void myMethod() {
                // TODO Auto-generated method stub

            }
        };
        main.myMethod();
    }
}

import java.util.Observable;
import java.util.Observer;

public abstract class Main {


    public static void main(String[] args) {
        Observable observable = new Observable();
        observable.addObserver(new Observer() {

            @Override
            public void update(Observable o, Object arg) {
                o.deleteObserver(this);
            }
        });
    }
}

不符合此sonarqube rule:

只包含一个方法的匿名内部类应该变成 lambdas : 使这个匿名内部类成为一个 lambda

我该如何解决?

【问题讨论】:

    标签: lambda java-8 sonarqube


    【解决方案1】:

    您提出的两个问题确实是规则提出的误报。 已创建错误票证:https://jira.codehaus.org/browse/SONARJAVA-553 和 https://jira.codehaus.org/browse/SONARJAVA-591

    稍微详细一点: 当有 this 引用时,不应提出问题(第二种情况),因为它实际上是不可修复的,我认为这条规则应该只适用于单一抽象方法接口,而不是每个匿名类来解决第一个问题案例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-05
      • 1970-01-01
      • 2011-02-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多