编辑:这个问题在我无法真正解决的范围内是错误的,并且是我项目中的一个错误。我的问题的根本原因是myLambda.getClass()不应引发ClassNotFoundException,并且lambda会按预期工作。
给定接口的类
Class myIf = MyIf.class;
还有一个lambda实例
Object myLambda;
如何确定是否可以将myLambda分配给MyIf而不会引发异常?由于myLambda.getClass()引发异常,这有点令人困惑。和“显而易见的”
myIf.isInstance(myLambda)
返回假
最佳答案
如果我的假设不正确,请再次纠正我,但是您会照常执行
static Class<?> clazz = MyIf.class;
public static void main(String[] args) throws Exception {
method(() -> System.out.println("hello")); // lambda
}
public static void method(MyIf myIf) {
System.out.println(clazz.isAssignableFrom(myIf.getClass()));
}
static interface MyIf {
public void execute();
}
版画
true
您实际上从未获得过对lambda表达式的引用,编译器会生成一个(合成的?)类,并将其实例传递给您的方法。