我知道publicLookup()
比公共方法的lookup()
更快,我想利用它。如果我要在MethodHandles.publicLookup().unreflect(Method)
上使用Method
,而setAccessible(true)
本身并非公开,但我已拨打{{1}},那会有效吗?
答案 0 :(得分:4)
由于每个人都可以调用成功调用Method
的{{1}},因此可以使用setAccessible(true)
与任何其他MethodHandles.publicLookup()
对象进行未反射。< / p>
毕竟,这是使用Lookup
进行覆盖率覆盖的唯一方法,因为MethodHandle
本身不提供任何访问覆盖功能。
以下演示使用java.lang.invoke
而不是Field
,但结果令人印象深刻:
Method