利用反射获得属性Field



import javax.sound.midi.VoiceStatus;
//先定义一个类,有属性和构造方法;还有有参构造;
public class Person {
private String name;
public String age;
public String high;
public String wight;
public String speed;

public Person() {
super();
}
public void eat() {}
public void sleep() {}
private void study() {}
public Person(String name, String age) {
this.name = name;
this.age = age;
}

}



public class TestField {
public static void main(String[] args) throws Exception {

Class cl  = Class.forName("com.geminno.Person");
Field[] f1= cl.getFields();//得到的是一个Field[]数组,并且只能得到类中public的方法,父类的public属性也能得到;

Field f2 = cl.getField("age");//把属性的名字传进来,就会返回一个属性的对象,并且属性的权限必须也是public的;父类的public属性也能得到;

Field[]f3 = cl.getDeclaredFields();//获取的是所有的属性,并且是非public的也能获取,但是不能获取父类的属性;

Field f4 =cl.getDeclaredField("name");///返回一个属性的对象,并且属性的权限必须是任意的;父类的属性不能得到;
System.out.println(f4);
System.out.println(f2);//打印age的信息;

for (int i = 0; i < f1.length; i++) {
System.out.println(f1[i].getName());
//打印出四个public的属性,因为没有父类的public的属性
System.out.println(f1[i].getModifiers());
//返回四个属性的权限修饰符,是int类型;public =1;
}
}
}


你可能感兴趣的:(java,测试,练习)