之前我们学习了利用 Java 的反射机制,在运行期间生成对象和运行方法。相比较而言,今天的内容要简单很多--运行期间运态为 Field 赋值。
1、在生成对象后,直接访问属性。
- import java.lang.reflect.Field;
- public class TestField {
- public String test;
- public static void main(String[] args) {
- try {
- Class cls = Class.forName("TestField");
- Field f = cls.getField("test");
- TestField tf = (TestField)cls.newInstance();
- f.set(tf, "abc");
- System.out.println(tf.test);
- } catch (Exception ex) {
- System.out.println(ex);
- }
- }
- }
为了访问 Class TestField 的属性 test,我们需要生成其 Class 对象,利用 Class 的 getField 方法得到 Field 后,只要调用 Field 的 set 方法就可以为其赋值了。一般情况下,对象的属性都会设计为 private 的,这时,上面的程序就会抛出 java.lang.NoSuchFieldException: test 异常。其实,利用反射是可以访问 private 属性的,只要将上面的 getField 改为 getDeclaredField 方法即可。
| 五冠 Nokia/诺基亚 5230 5230XM 送证书V20版 内有港行 销数千台 | ||
| 1000.0元 | ||
| 批发 雷朋3025镜面反光太阳镜 太阳眼镜 19.9/副 顶级质量 | ||
| 19.9元 | ||
| 促销笔记本电脑 13.3英寸超薄N450无线网卡视频 | ||
| 1999.0元 | ![]() | |





