JAVA bean 复制 数据转化 用于两个对象的filed的值的根据set方法和get方法转换

 今天在JDF下面封装struts2。

由于JDF的bean 和 struts的action 不是一个东西,当然可以做在一起,但是做在一起会有耦合的问题,而且灵活性大大降低,所以就写了个简单的对象赋值的方法。

 

假设一个UserBean是和表映射的

有一个UserAction 是和JSP表单映射的。

 

这里的字段变量名字都是一样,那么我们可以写一个公用的方法,用于转换两个对象的值的对应。

 

代码如下,Wrap类

 

public class ObjectTransWrap { public static Object wrap(Object actionObj,Class OperatorAction) throws Exception, InstantiationException{ Object o = OperatorAction.newInstance(); BeanInfo beanInfo = Introspector.getBeanInfo(actionObj.getClass()); PropertyDescriptor[] properties = beanInfo.getPropertyDescriptors(); Method get = null; Method set = null; for (int i = 0; i < properties.length; i++) { try{ get = properties[i].getReadMethod(); set = o.getClass().getMethod( properties[i].getWriteMethod().getName(), new Class[]{properties[i].getPropertyType()}); }catch(Throwable a){ continue; } if(set!=null&&get!=null){ set.invoke(o, new Object[]{get.invoke(actionObj, new Object[]{})}); set = null; get = null; } } return o; }

 

下面我们新建两个Bean。

 

UserBean.java

 

public class UserBean{ private String name = ""; private long age = -1; public long getAge(){ return age; } public String getName(){ return name; } public void setAge( long age ){ this.age = age; } public void setName( String name ){ this.name = name; } }

 

UserAction.java

 

public class UserAction{ private String name = ""; private long age = -1; public long getAge(){ return age; } public String getName(){ return name; } public void setAge( long age ){ this.age = age; } public void setName( String name ){ this.name = name; } }

 

main函数

 

public static void main(String[] args) throws InstantiationException, Exception{ UserAction a = new UserAction(); a.setName("名字"); a.setAge(22); UserBean bean = (UserBean)wrap(a,UserBean.class); System.out.println("name="+bean.getName()); System.out.println("age="+bean.getAge()); }

 

输出结果是:

name=名字
age=22

 

两个bean的值复制成功。但是我感觉我写的上面的代码是在重复的造轮子。JDK里面貌似有这样的方法 

作者keyboardsun ,转载请标明出处

你可能感兴趣的:(java,bean,exception,properties,String,object)