编辑:这个问题格式不正确到我无法解决的问题,并且是我项目中的某个地方的错误。我的问题的根本原因是myLambda.getClass()不应该抛出ClassNotFoundException,并且lambda按预期工作。
给定接口的类
Class myIf = MyIf.class;
还有一个lambda实例
Object myLambda;
如何在不抛出异常的情况下确定myLambda是否可以分配给MyIf?这有点令人费解,因为myLambda.getClass()抛出异常。 "显而易见"
myIf.isInstance(myLambda)
返回false
答案 0 :(得分:5)
如果我的假设不正确,请再次纠正我,但你会照常做到
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表达式的引用,编译器会生成一个(合成?)类,并将其实例传递给您的方法。