首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何比较MethodHandle实例?

如何比较MethodHandle实例?
EN

Stack Overflow用户
提问于 2014-10-30 07:57:09
回答 1查看 176关注 0票数 1

如何比较两个MethodHandle实例?如果句柄指向相同的方法,我期望函数返回true。这个类看起来不覆盖equals()hashcode()。使用相等运算符(==)安全吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-30 13:32:12

首先,MethodHandle不仅可以封装目标方法,还可以封装行为。例如,您可能有两个方法句柄指向相同的方法,但一个用于封装非虚拟(super. …)调用,另一个表示普通的虚拟调用。这些句柄不可能相等。

除此之外,MethodHandles也没有定义的等式。它们允许调用,但不允许内省。

JVMSpec§5.4.3.5.方法类型与方法处理分辨率

对于实习生方法类型或方法句柄,不需要Java虚拟机的实现。也就是说,对结构相同的方法类型或方法句柄的两个不同的符号引用可能分别不解析为java.lang.invoke.MethodTypejava.lang.invoke.MethodHandle的同一个实例。

但是,从Java 8开始,有一个特性允许对直接的MethodHandle ( Lookup.revealDirect )进行内省。对于此操作成功的句柄,可以使用返回的MethodHandleInfo中的信息来确定两个句柄是否指向同一方法。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26647694

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档