读书人

Java 反照: 私有字段和方法

发布时间: 2012-11-26 11:48:50 作者: rapoo

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...

读书人网 >编程

热点推荐