gpt4 book ai didi

java - 如何判断 JDK8 lambda 是否可以赋值给类型?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:17:37 25 4
gpt4 key购买 nike

编辑:这个问题格式错误,我无法真正修复它,并且是我项目中某处的错误。我的问题的根本原因是 myLambda.getClass() 不应抛出 ClassNotFoundException,并且 lambda 会按预期工作。

给定一个接口(interface)类

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 表达式的引用,编译器生成一个(合成的?)类并将其实例传递给您的方法。

关于java - 如何判断 JDK8 lambda 是否可以赋值给类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22140955/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com