Gui*_*ino 5 lambda intellij-idea java-8
我正在编写一个小框架,需要instanceof用来知道传递哪种类型的回调.我已经知道了instanceof它的缺点,但它在第三方库中使用,我不能改变那部分.
在编写lambdas并进行转换时,IntelliJ警告我,转换是多余的,但实际上它是需要的(它会影响结果),并且如果我明确声明lambda它就可以工作.你知道这是不是一个bug,也许我错过了什么或有更好的方法来做到这一点?
例:
public class Main {
public interface Iface {
String run();
}
public interface IfaceA extends Iface {
}
public interface IfaceB extends Iface {
}
public static void lambdaTest(Iface iface) {
System.out.print(iface.run()+": ");
if (iface instanceof IfaceA) {
System.out.println("IfaceA");
} else if (iface instanceof IfaceB) {
System.out.println("IfaceB");
} else {
System.out.println("Iface");
}
}
public static void main(String[] args) {
lambdaTest((IfaceA)() -> "Casted to A");
lambdaTest((IfaceB)() -> "Casted to B");
lambdaTest(() -> "Not Casted");
IfaceA lambda = () -> "Declared as A";
lambdaTest(lambda);
}
}
Run Code Online (Sandbox Code Playgroud)
输出是:
Casted to A: IfaceA
Casted to B: IfaceB
Not Casted: Iface
Declared as A: IfaceA
Run Code Online (Sandbox Code Playgroud)
但是在IntelliJ中我收到了警告:
还测试了javac,我没有得到任何警告:
% javac Main.java -Xlint !2525
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
508 次 |
| 最近记录: |