如何在第三方库中访问受保护的Java方法?

sal*_*emi 8 java methods protected

假设您必须访问代码中某处的Java对象的受保护方法.你的解决方案是什么?

我知道一种方法:您可以使用反射并在Method对象上调用setAccessible(true).

还有其他想法吗?

pap*_*pap 5

您可以将方法子类化,创建一个公共方法,该方法调用受保护的方法并返回结果。

如果您不能这样做(如果该类是最终的),则setAccessible几乎是您唯一的方法。


rsp*_*rsp 5

根据java访问修饰符,除了扩展对象(如果您收到对象,则无法扩展)是从与您收到的对象相同的包中的对象访问它.所以你的选择是在同一个包中创建一个包装类,它通过受保护的方法为你检索属性.