package reflect;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
import org.apache.commons.beanutils.BeanUtils;
import org.apache.commons.beanutils.PropertyUtils;
public class BeanUtilsTest {
public static void printObj(Object o) throws IllegalArgumentException, IllegalAccessException{
for(Field f:A.class.getDeclaredFields()){//getFields()不能获取私有变量
f.setAccessible(true);//暴力访问private
System.out.println(f.get(o));
}
}
public static void properties(Object o) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException{
BeanUtils.setProperty(o, "birthDay.year", "113");//类属性级联设置
//age是int型 这里赋String 会自动转换为Int 很适用于Web项目
//如果是PropertyUtils.setProperty 就不会自动转换
BeanUtils.setProperty(o, "age", "27");
System.out.println(BeanUtils.getProperty(o, "birthDay"));
System.out.println(BeanUtils.getProperty(o, "age"));
}
public static void convertObjToMap(Object o) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException{
Map map=BeanUtils.describe(o);
for (Object key : map.keySet()) {
System.out.println(key+":"+map.get(key));
}
}
public static void putMapIntoObj(Object o) throws IllegalAccessException, InvocationTargetException{
Map<String, Object> properties=new HashMap<String, Object>();
properties.put("name", "rain");
properties.put("age", "24");
properties.put("birthDay", new Date());
BeanUtils.populate(o, properties);//把Map的数据导入Obj
printObj(o);//打印
}
public static void main(String[] args) throws IllegalAccessException, InvocationTargetException, NoSuchMethodException {
A a=new A();
BeanUtilsTest.printObj(a);
// BeanUtilsTest.properties(a);
// BeanUtilsTest.convertObjToMap(a);
// BeanUtilsTest.putMapIntoObj(a);
}
}