LazyDynaBean动态加载属性类,配合LazyDynaClass一起使用
//用法1
DynaProperty[] props=new DynaProperty[]{
new DynaProperty("name",String.class),
new DynaProperty("age",Integer.class),
new DynaProperty("birth",Date.class)
};
LazyDynaClass dynaClass=new LazyDynaClass("user",LazyDynaBean.class,props);
try {
LazyDynaBean dynaBean = (LazyDynaBean) dynaClass.newInstance();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
dynaBean.set("name", "章子怡");
dynaBean.set("age", 16);
dynaBean.set("birth", sdf.parse("1986-05-01"));
StringBuilder sb=new StringBuilder();
sb.append("name:").append(dynaBean.get("name"))
.append(",age:").append(dynaBean.get("age"))
.append(",birth:").append(sdf.format(dynaBean.get("birth")));
System.out.println(sb.toString());
dynaBean.set("email", "yinhe2726@163.com");
System.out.println(dynaBean.get("email"));
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InstantiationException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//用法2
DynaBean bean=new LazyDynaBean();
bean.set("name", "孙晓磊");
System.out.println(bean.get("name"));
MutableDynaClass dc=(MutableDynaClass)bean.getDynaClass(); //获取可以动态添加属性的DynaClass类
System.out.println("----开始测试数组属性----");
dc.add("indexProp", int[].class); //添加整型数组属性
bean.set("indexProp", 0, 1); //给数组属性添加值
bean.set("indexProp", 1, 2);
int[] indexProp=(int[]) bean.get("indexProp");
System.out.println(indexProp[1]);
System.out.println("----开始测试LIST属性----");
bean.set("indexProp2", 0, "str1"); //直接添加属性,此时属性的类型是LIST或数组,此处是LIST
bean.set("indexProp2", 1, "str2");
List list=(List) bean.get("indexProp2");
System.out.println(list.get(0));
System.out.println("----开始测试MAP属性----");
bean.set("mapProp","key1","value1"); //直接添加键值对,默认属性类型是MAP
Map map=(Map)bean.get("mapProp");
System.out.println(map.get("key1"));
dc.add("mapProp2", HashMap.class); //或者先设置属性类型,再添加
bean.set("mapProp2","mapProp2-key1","mapProp2-value1");
Map map2=(Map)bean.get("mapProp2");
System.out.println(map2.get("mapProp2-key1"));