从 lambda 对象获取 MethodHandle

橙狗

来自java.lang.invoke.LambdaMetafactory

评估 lambda 表达式的推荐机制是将 lambda 体脱糖到一个方法,调用一个 invokedynamic 调用站点,其静态参数列表描述了函数接口的唯一方法和脱糖的实现方法,并返回一个对象(lambda 对象)实现目标类型。

从检查来看,这至少是 Oracle JDK 所做的。

我的问题:给定一个 lambda 对象,有没有办法找到实现方法的名称(或句柄)?或者,给定一个实现方法列表,有没有办法判断哪个对应于给定的 lambda 对象?

涅瓦

您可以访问 lambda 类的 ConstantPool(即通过使用sun.misc.SharedSecrets.getJavaLangAccess().getConstantPool(class)),然后搜索方法引用。您必须忽略对象构造函数以及自动装箱/拆箱方法引用,剩下的方法引用是实现方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Lambda获取对象列表的hashmap值

来自分类Dev

Java:如何从API Gateway获取AWS Lambda事件的Request对象?

来自分类Dev

无法通过API网关解析事件对象以获取Lambda的响应?

来自分类Dev

MethodHandle InvokeExact参数

来自分类Dev

MethodHandle InvokeExact参数

来自分类Dev

使用LAMBDA表达式获取具有相同类型的对象的对象树的深度

来自分类Dev

使用LAMBDA表达式获取具有相同类型的对象的对象树的深度

来自分类Dev

使用lambda删除对象

来自分类Dev

“刷新” lambda对象

来自分类Dev

lambda函数返回对象

来自分类Dev

Lambda捕获QFile对象

来自分类Dev

从lambda获取捕获的变量?

来自分类Dev

获取 lambda 的函数原型

来自分类常见问题

Python:在lambda中使用lambda返回lambda对象

来自分类Dev

编写lambda表达式以从对象列表中获取属性列表

来自分类Dev

NodeJS如何在Lambda无服务器Websocket中获取请求对象?

来自分类Dev

Java:获取Lambda的通用类型

来自分类Dev

如何获取lambda arns列表?

来自分类Dev

获取指向lambda的函数指针?

来自分类Dev

获取Java中的LAMBDA的结果

来自分类Dev

从Lambda函数点获取坐标

来自分类Dev

从Lambda函数获取属性名称

来自分类Dev

Java:获取lambda的通用类型

来自分类Dev

Java MethodHandle; 在多个位置使用参数

来自分类Dev

Android中有等效的MethodHandle吗?

来自分类Dev

Java MethodHandle; 在多个位置使用参数

来自分类Dev

AWS Lambda-在lambda函数中获取API网关路径

来自分类Dev

通过回调从lambda获取响应并让lambda继续工作

来自分类Dev

层级对象上的Java Lambda操作