反射获取变量并调用。说再多不入代码来的快。我把代码分成了一块块代码区,需要看一个注释其他的就可以了,测试过都是可以的!
package FanShe;
import java.lang.reflect.Field;
class Student2 {
public Student2(){
}
//**********字段*************//
public String name;
public String name2;
protected int age;
char sex;
private String phoneNum;
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + ", sex=" + sex
+ ", phoneNum=" + phoneNum + "]";
}
}
public class FieldDemo {
public static void main(String[] args) throws Exception {
Class c=Student2.class;
/*//获取所有public变量
Field[] farr=c.getFields();
for(Field f:farr) {
System.out.println(f);
}*/
/*//获取所有变量
Field[] farr=c.getDeclaredFields();
for(Field f:farr)
System.out.println(f);*/
/*//获取公有指定字段
Field f=c.getField("name");
System.out.println(f);
//设置值
Object obj=c.getConstructor().newInstance();
f.set(obj, "傅靖耀");
Student2 s=(Student2)obj;
System.out.println(s.name);*/
//获取任意
/*Field f=c.getDeclaredField("phoneNum");
System.out.println(f);
Object obj=c.newInstance();
f.setAccessible(true);
f.set(obj, "1888888888889");
System.out.println(f.getName()+f.get(obj));*/
}
}