在运行时利用反射分析对象,其实就是利用反射来获得或者设置类的域。举例如下:
有一个Student类:
package testreflection; public class Student { private String stuNum; public Student(String stuNum) { // TODO Auto-generated constructor stub this.stuNum = stuNum; } }
package testreflection; import java.lang.reflect.Field; public class ObjectAnalyzerTest { public static void main(String[] args) { // TODO Auto-generated method stub Student student = new Student("20101120244"); Class cl = student.getClass(); try { Field field = cl.getDeclaredField("stuNum"); // 这一句对于访问私有域的值是必须的 field.setAccessible(true); // 获得域 Object object = field.get(student); System.out.println(object); // 设置域 field.set(student, "20121120064"); Object object1 = field.get(student); System.out.println(object1); } catch (NoSuchFieldException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SecurityException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
运行ObjectAnalyzerTest结果如下:
20101120244
20121120064
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/l294265421/article/details/46654455