1.传统方式
ConvertUtils.register(new DateLocaleConverter() , Date.class);//但此实现类,有个BUG,不能传空,
Person p=new Person();
PropertyDescriptor pds=new PropertyDescriptor("age",Person.class);
//得到写方法
Method method=pds.getWriteMethod();//相当于获取set方法
method.invoke(p, 25);//给对象赋值
//System.out.println(p.getAge());
//获取对象读方法
method=pds.getReadMethod();
System.out.println(method.invoke(p,null));
2.通过sun公司的内省Introspector
BeanInfo info=Introspector.getBeanInfo(Person,class,Object.class); //得到bean自己属性
PropertyDescriptor[ ] pds=info.getPropertyDescriptors();
for(PropertyDescriptor pd:pds){
System.out.print(pd.getName());
}
3 .第三方Apache公司的 BeanUtils方式
Person p=new Person();
2.通过sun公司的内省Introspector
BeanInfo info=Introspector.getBeanInfo(Person,class,Object.class); //得到bean自己属性
PropertyDescriptor[ ] pds=info.getPropertyDescriptors();
for(PropertyDescriptor pd:pds){
System.out.print(pd.getName());
}
3 .第三方Apache公司的 BeanUtils方式
Person p=new Person();
BeanUtils.setProperty(p, "name", "hhb");//参数:对象,属性,值
System.out.println(p.getName());
4. 通过Map
Map map=new HashMap();
5. BeanUtils只支持8种基本数据类型,对于其它类型则要注册转换器,以下以Data为实例
第一种,自己写:
ConvertUtils.register(new Converter(){
},
Date.class);
第二种,使用Apache 公司的Converer的实现类,其它实现可以参阅API文档,
4. 通过Map
Map map=new HashMap();
map.put("name","hhb");
map.put("age","25");
map.put("birthday","1987-8-2");
ConvertUtils.register(new DateLocaleConverter(), Date.class);
Person bean=new Person();
BeanUtils.populate(bean, map);//
注意map中属性名称必须与bean(Person)中的属性名字一致
5. BeanUtils只支持8种基本数据类型,对于其它类型则要注册转换器,以下以Data为实例
第一种,自己写:
ConvertUtils.register(new Converter(){
public
<T> T convert(Class
<T> type, Object value) {
//泛型定义有待学习
// TODO Auto-generated method stub
//System.out.println(value);
if(value==null){
return null;
}
if(!(value instanceof String)){
throw new ConversionException("只支持String类型转换!");
}
String str=(String) value;
if(str.trim().equals("")){
return null;
}
SimpleDateFormat df=new
SimpleDateFormat("yyyy-MM-dd");
try{
return
(T)
df.parse(str);
}catch(Exception e){
throw new RuntimeException(e);
}
}
ConvertUtils.register(new DateLocaleConverter() , Date.class);//但此实现类,有个BUG,不能传空,