将MethodHandles.publicLookup()与Method.setAccessible(true)结合使用

时间:2014-09-19 15:53:01

标签: java reflection java-8 methodhandle

我知道publicLookup()比公共方法的lookup()更快,我想利用它。如果我要在MethodHandles.publicLookup().unreflect(Method)上使用Method,而setAccessible(true)本身并非公开,但我已拨打{{1}},那会有效吗?

1 个答案:

答案 0 :(得分:4)

由于每个人都可以调用成功调用Method的{​​{1}},因此可以使用setAccessible(true)与任何其他MethodHandles.publicLookup()对象进行未反射。< / p>

毕竟,这是使用Lookup进行覆盖率覆盖的唯一方法,因为MethodHandle本身不提供任何访问覆盖功能。

以下演示使用java.lang.invoke而不是Field,但结果令人印象深刻:

Method