码迷,mamicode.com
首页 > 移动开发 > 详细

Android(java)学习笔记:109:通过反射获取成员变量并且使用

时间:2015-06-10 14:05:29      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:

 1 package cn.itcast_03;
 2 
 3 import java.lang.reflect.Constructor;
 4 import java.lang.reflect.Field;
 5 
 6 /*
 7  * 通过发生获取成员变量并使用
 8  */
 9 public class ReflectDemo {
10     public static void main(String[] args) throws Exception {
11         // 获取字节码文件对象
12         Class c = Class.forName("cn.itcast_01.Person");
13 
14         // 获取所有的成员变量
15         // Field[] fields = c.getFields();
16         // Field[] fields = c.getDeclaredFields();
17         // for (Field field : fields) {
18         // System.out.println(field);
19         // }
20 
21         /*
22          * Person p = new Person(); p.address = "北京"; System.out.println(p);
23          */
24 
25         // 通过无参构造方法创建对象
26         Constructor con = c.getConstructor();
27         Object obj = con.newInstance();
28         System.out.println(obj);
29 
30         // 获取单个的成员变量
31         // 获取address并对其赋值
32         Field addressField = c.getField("address");
33         // public void set(Object obj,Object value)
34         // 将指定对象变量上此 Field 对象表示的字段设置为指定的新值。
35         addressField.set(obj, "北京"); // 给obj对象的addressField字段设置值为"北京"
36         System.out.println(obj);
37 
38         // 获取name并对其赋值
39         // NoSuchFieldException
40         Field nameField = c.getDeclaredField("name");
41         // IllegalAccessException
42         nameField.setAccessible(true);
43         nameField.set(obj, "林青霞");
44         System.out.println(obj);
45 
46         // 获取age并对其赋值
47         Field ageField = c.getDeclaredField("age");
48         ageField.setAccessible(true);
49         ageField.set(obj, 27);
50         System.out.println(obj);
51     }
52 }

 

Android(java)学习笔记:109:通过反射获取成员变量并且使用

标签:

原文地址:http://www.cnblogs.com/hebao0514/p/4565776.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!