编辑:这个问题在我无法真正解决的范围内是错误的,并且是我项目中的一个错误。我的问题的根本原因是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表达式的引用,编译器会生成一个(合成的?)类,并将其实例传递给您的方法。

07-27 23:16