1)获取非静态属性的值
//获取非静态属性的值
public static Object getField(Object obj,String fieldName) throws Exception{
Class clazz=obj.getClass();
Field field = clazz.getField(fieldName);
return field.get(obj);//非静态属性,需要传实例对象过去
}
2)获取静态属性的值
思考:对于非静态属性,调用field. get(Object obj)时,传过去的obj必然是实例对象。但是静态属性与对象无关,静态属性属于类,那么obj该怎么写呢?事实上,当为静态属性时,obj是什么已经不重要了,obj可以任意写,甚至可以为null。
//获取静态属性的值
public static Object getStaticField(String className,String fieldName) throws Exception{
Class clazz=Class.forName(className);
Field field = clazz.getField(fieldName);
Object result = field.get(null);//obj可以为null
// Object result = field.get(new Object());//正常运行ÿ