/**
* @param args
*/
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
LianXi1 lx = new LianXi1(2);
//获取该对象中变量a,
//为什么该变量为default修饰时就不行呢?
Field fieldA = lx.getClass().getField("a");
System.out.println(fieldA.get(lx));
}
}
class LianXi1
{
public int a;
public LianXi1(int a) {
super();
this.a = a;
}
} 作者: 李深山 时间: 2012-3-19 16:46
public Field getField(String name)
throws NoSuchFieldException,
SecurityException返回一个 Field 对象,它反映此 Class 对象所表示的类或接口的指定公共成员字段。name 参数是一个 String,用于指定所需字段的简称。
---------------------------------------------------------------------------------------------------------------------------------------------------------------
public Field[] getDeclaredFields()
throws SecurityException返回 Field 对象的一个数组,这些对象反映此 Class 对象所表示的类或接口所声明的所有字段。包括公共、保护、默认(包)访问和私有字段,但不包括继承的字段。返回数组中的元素没有排序,也没有任何特定的顺序。如果该类或接口不声明任何字段,或者此 Class 对象表示一个基本类型、一个数组类或 void,则此方法返回一个长度为 0 的数组。 作者: 魏群 时间: 2012-3-19 18:26
是的
Field getField(String name)
返回一个 Field 对象,它反映此 Class 对象所表示的类或接口的指定公共成员字段。
Field getDeclaredField(String name)
返回一个 Field 对象,该对象反映此 Class 对象所表示的类或接口的指定已声明字段。
对private的属性修改 由于权限不够还要加上setAccessible(true) 用于取消权限检查。作者: a504079589 时间: 2012-3-19 18:36
Class类中的方法getField(String)可以获取该类中可见的成员变量;
Class类中的方法getDeclaredField(String)可以获取该类中定义的成员变量; 只要是该类中定义的创元变量都可以获取, 但是不能访问私有的或受保护的;
要想访问使用Field类中的setAccessible(boolean)方法, 就可以设置访问权限, 可以讲私有的属性设置为可见的了;