SonarLint:使这个匿名内部 class 成为 lambda(非功能接口)
SonarLint: make this anonymous inner class a lambda (non functional interface)
我是 运行 SonarLint 3.4 和 Oracle JDK 8. SonarLint 给我这个错误:
Anonymous inner classes containing only one method should become lambdas (squid:S1604)
我无法控制的界面是这样设置的:
public interface Interface {
static String staticMethodOne() {
return "abc";
}
default String methodOne(String input) {
return "one: " + input;
}
default String methodTwo(String input) {
return "two: " + input;
}
}
这是产生错误的代码:
public class Main {
public static void main(String[] args) {
callMethodOne(
new Interface() {
@Override
public String methodOne(String input) {
return ("override: " + input);
}
}
);
}
private static void callMethodOne(Interface instance) {
System.out.println(instance.methodOne("test"));
}
}
因为 "Interface" 不是功能接口,所以我看不到用 lambda 替换它的方法。这是 SonarLint 中的错误还是我遗漏了什么?
已确认为 SonarJava 中的错误;是时候等待下一次 SonarLint 更新了。
我是 运行 SonarLint 3.4 和 Oracle JDK 8. SonarLint 给我这个错误:
Anonymous inner classes containing only one method should become lambdas (squid:S1604)
我无法控制的界面是这样设置的:
public interface Interface {
static String staticMethodOne() {
return "abc";
}
default String methodOne(String input) {
return "one: " + input;
}
default String methodTwo(String input) {
return "two: " + input;
}
}
这是产生错误的代码:
public class Main {
public static void main(String[] args) {
callMethodOne(
new Interface() {
@Override
public String methodOne(String input) {
return ("override: " + input);
}
}
);
}
private static void callMethodOne(Interface instance) {
System.out.println(instance.methodOne("test"));
}
}
因为 "Interface" 不是功能接口,所以我看不到用 lambda 替换它的方法。这是 SonarLint 中的错误还是我遗漏了什么?
已确认为 SonarJava 中的错误;是时候等待下一次 SonarLint 更新了。