【发布时间】:2013-10-02 10:49:34
【问题描述】:
如何使用方法句柄调用私有方法?
据我所知,只有两种可公开访问的 Lookup 实例:
MethodHandles.lookup()MethodHandles.publicLookup()
两者都不允许不受限制的私人访问。
有一个非公开的Lookup.IMPL_LOOKUP 可以满足我的要求。是否有一些公开的方式来获取它(假设 SecurityManager 允许它)?
【问题讨论】:
-
我遇到了类似的问题(对于 getter/setter),如果您能分享一下您是如何设法调用私有方法的,那就太好了?
-
在下面的答案中查看示例?
-
它在调用调用之前使用反射来设置可访问性,我想知道为什么要这样做,因为lookup() 应该让调用者访问@987654321 中指定的直接/私有字段和方法@.
-
它只是使用
setAccessible来获得Lookup的特殊特权实现,它可以调用私有成员,无论它们是否可供调用者访问。
标签: java reflection java-7 invokedynamic methodhandle