如何通过对象使用类的私有或者保护域的方法
如果是静态方法,直接可以用类调用。
正常情况下,如果是非静态的:
1,是保护方法,那么就需要继承才能使用了。 2,是私有的那么就不能访问了。
但是可以通过对象反射调用所有的方法,甚至是私有的。
比如:ClassLoader的保护方法defineClass
一般用在自定义的类加载器中
Method defineClassMethod = ClassLoader.class.getDeclaredMethod("defineClass", byte[].class, int.class, int.class); defineClassMethod.setAccessible(true);
//加载想要加载的类 defineClassMethod.invoke(cl.getParent(), classBytes, 0, classBytes.length);
总结好处是:无需继承那个类才能使用其保护域方法。甚至可以使用私有方法。

浙公网安备 33010602011771号