这些代码示例:
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
我该如何解决?
答案 0 :(得分:3)
你提出的两个问题确实是由规则引起的误报。 已创建错误票证:https://jira.codehaus.org/browse/SONARJAVA-553和https://jira.codehaus.org/browse/SONARJAVA-591
详细介绍一下:
当存在this
引用时,不应该引发问题(第二种情况),因为它实际上是不可修复的,我认为此规则应该只应用单个抽象方法接口而不是每个匿名类来解决问题第一个案例。