(1)获取Field
Class studentClass=Class.forName("test.Student");
//只能获取公开的属性,用getDeclaredFieds()可以获得其他的
Field[] f=studentClass.getFields();
for (Field fs:f) {
//获取简单的属性名,类型,修饰符的数字代号
System.out.println(fs.getName()+" "+fs.getType()+" "+fs.getModifiers());
}
(2)反编译Field
可以通过获得类的修饰符、类名,属性的修饰符、名称等,反写出这个类。
(3)通过反射机制访问对象属性
通过反射机制获取到一个对象的属性或者进行修改。
Class accountClass=Class.forName("test.Account");
Object o=accountClass.newInstance();
Field f = null;
try {
f=accountClass.getDeclaredField("bankMoney");
} catch (NoSuchFieldException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//要设定对象同样需要三要素:对象、属性、值
f.set(o,2222);f.get(o);
上述不能访问私有的属性,如果要访问需要f.setAccessible(true)。
3304

被折叠的 条评论
为什么被折叠?



