Java 反射: 私有字段和方法
来自:http://tutorials.jenkov.com/java-reflection/private-fields-and-methods.html
尽管我们通常认为通过JAVA的反射机制来访问其它类的私有字段和私有方法是可行的,其实并没有那么困难。
注释:只有在单独的JAVA程序中运行该代码才有效,就像你做一些单元测试或者常规的程序。如果你尝试在JAVA APPLET内使用该方法,你需要稍稍修改SecurityManager。但是,因为你不是经常需要与它打交道,这里也就不再赘述了。
这里是本次内容的列表:
1. 访问私有字段。
2. 访问私有方法。
访问私有字段:
为了访问私有字段,你需要调用Class.getDeclaredField(String name)或者Class.getDeclaredFields()方法。方法Class.getField(String name)和Class.getFields()仅仅返回共有的字段,所以它们都无法起到作用。这里有一个例子,该例子中有一个包含私有字段的类,在该类下面有通过反射访问私有字段的代码。
PrivateObject privateObject = new PrivateObject("The Private Value");Method privateStringMethod = PrivateObject.class. getDeclaredMethod("getPrivateString", null);privateStringMethod.setAccessible(true);String returnValue = (String) privateStringMethod.invoke(privateObject, null); System.out.println("returnValue = " + returnValue);这个代码例子会打印出文本"returnValue = The private Value",该值正好是私有方法的返回值。
Over...