java反射之访问成员变量
类:
public class Phone { int size = 15; public float price = 2111.2f; protected boolean good = true; // private String brand = "iphone"; }?
调用:
import java.lang.reflect.Field; public class Test { public static void main(String[] args) throws Exception{ Phone p = new Phone(); Class c = p.getClass(); Field[] declaredFields = c.getDeclaredFields(); //获得所有成员变量 for(int i = 0; i < declaredFields.length; i++) { //遍历所有成员变量 Field field = declaredFields[i]; //获取成员变量的名字 System.out.print("名称:" + field.getName()+"\t"); //获取成员变量类型 Class fieldType = field.getType(); System.out.println("类型为:" + fieldType); //返回指定对象上词field表示的值 System.out.println("值为\t"+field.get(p)); } } }?
结果:
名称:size类型为:int值为15名称:price类型为:float值为2111.2名称:good类型为:boolean值为true
?
注意:
?? 访问私有变量会抛出异常!