`
dchaoxiong
  • 浏览: 180287 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

javabean对象自动赋值给另一个javabean对象

阅读更多
把JavaBean的from的值自动set给to,省略了自己从from中get然后再set给to   

   public static Object convertBean2Bean(Object from, Object to) { 
        try { 
            BeanInfo beanInfo = Introspector.getBeanInfo(to.getClass()); 
            PropertyDescriptor[] ps = beanInfo.getPropertyDescriptors(); 

            for (PropertyDescriptor p : ps) { 
               Method getMethod = p.getReadMethod(); 
               Method setMethod = p.getWriteMethod(); 
               if (getMethod != null && setMethod != null) { 
                   try { 
                      Object result = getMethod.invoke(from); 
                      setMethod.invoke(to, result); 
                   } catch (Exception e) { 
                      // 如果from没有此属性的get方法,跳过 
                      continue; 
                   } 
               } 
            } 
        } catch (Exception e) { 
           e.printStackTrace(); 
        } 

        return to; 
    } 

    /** 
     * 不支持to继承(to是其他bean的子类) 
     */ 
   public static Object coverBean2Bean(Object from, Object to) { 
        Class fClass = from.getClass(); 
        Class tClass = to.getClass(); 
        // 拿to所有属性(如果有继承,父类属性拿不到) 
        Field[] cFields = tClass.getDeclaredFields(); 
        try { 
            for (Field field : cFields) { 
               String cKey = field.getName(); 
               // 确定第一个字母大写 
               cKey = cKey.substring(0, 1).toUpperCase() + cKey.substring(1); 

               Method fMethod; 
               Object fValue; 
               try { 
                    fMethod = fClass.getMethod("get" + cKey);// public方法 
                    fValue = fMethod.invoke(from);// 取getfKey的值 
               } catch (Exception e) { 
                 // 如果from没有此属性的get方法,跳过 
                 continue; 
               } 

                try { 
                    // 用fMethod.getReturnType(),而不用fValue.getClass() 
                    // 为了保证get方法时,参数类型是基本类型而传入对象时会找不到方法 
                    Method cMethod = tClass.getMethod("set" + cKey, fMethod.getReturnType()); 
                    cMethod.invoke(to, fValue); 
                } catch (Exception e) { 
                    // 如果to没有此属性set方法,跳过 
                    continue; 
                } 
            } 
        } catch (Exception e) { 
            e.printStackTrace(); 
        } 

        return to; 
    } 


   static final String spare = "======================================================\r\n"; 

   /**      * 打印bean信息 
     */ 
   public static void printInvoke(Object object) { 
      Method[] ms = object.getClass().getMethods(); 
      String str = spare; 
      str += "start log object: " + object.getClass().getSimpleName() + "\r\n"; 
      str += spare; 
      System.out.print(str); 

      for (int i = 0; i < ms.length; i++) { 
         if (ms[i].getName().indexOf("get") != -1 
             && !ms[i].getName().equals("getClass")) { 
             try { 
                 System.out.println(ms[i].getName() + " = " 
                 + ms[i].invoke(object)); 
             } catch (Exception e) { 
                 e.printStackTrace(); 
             } 
         } 
      } 

     System.out.println(spare); 
   } 

 

分享到:
评论

相关推荐

    利用反射实现JavaBean 的自动赋值

    很多公司里面不会用到H 所以只需要用SS不用h 相反来说用jdbc实现H的功能。

    前台字符串赋值给JavaBean属性自动类型转换

    前台字符串赋值给JavaBean属性自动类型转换的实现(BeanUtils,ConverterConvertUtils三个类的使用)

    Servlet中对获取网页表单数据自动给JavaBean赋值的BeanUtil工具类

    Servlet中对获取网页表单数据自动给JavaBean赋值的BeanUtil工具类 Servlet中对获取网页表单数据自动给JavaBean赋值的BeanUtil工具类

    表单为JavaBean赋值

    希望能给大家带来方便,也希望大家能多上传资料共同学些

    Java面向对象(基础)- 属性赋值过程、JavaBean和UML类图

    Java面向对象(基础)-- 属性赋值过程、JavaBean和UML类图

    javabean基础知识

    掌握JavaBean的创建方法,尤其是其内部属性的创建方法 掌握JavaBean在JSP中的定义方法以及参数封装方法 掌握JavaBean和JSP结合编程方法

    jsp结合javabean的实践

    //HashMap是非常常用的对象,用put(obj key,obj value)赋值,用get(obj key)获得对应的value 对象。 hm.put("sum",new Double(sum_dingdan)); }catch (Exception e){ System.out.println(e.getMessage());...

    一个关于递归读取xml 并返回到javaBean的小例子

    Avalon读取xml 没写成通用的 但是我用递归的算法 还是将xml中的内容赋值给了 我写的特定的javabean

    BeanUtils工具

    BeanUtils工具是一种方便我们对JavaBean进行操作的工具,是Apache组织下的产品。beanUtils 可以便于对javaBean的属性、对象进行赋值,beanUtils可以将一个MAP集合的数据拷贝到一个javabean对象中。

    底层的技术-----反射技术

    设计一个方法,给一个字符串(类)返回一个对象,对象里面还有属性值 例如考试系统中 Question类型 ATM系统 User类型 Question和User类型都是我们自定义的,这两个类的目的是为了存储值,更像个容器 Service Dao...

    Java Bean 遍历和使用注解给Bean的属性添加属性值

    NULL 博文链接:https://linleizi.iteye.com/blog/1722171

    Java数据库代码自动生成工具

    自动读取数据库的表,生成Javabean或者生产insert、select、update、delete。还有生成给javabean赋值的语句。

    OGNL中文版详细文档

    查找第一个匹配项 查找最后一个匹配项 调用构造方法 调用静态方法 读取静态域(Static Fields) 表达式计算 伪Lambda表达式 供集合使用的伪属性 与Java语言不同的操作符 赋值与取值 5. 对象到数据类型的强制...

    Java Web编程宝典-十年典藏版.pdf.part2(共2个)

    5.3.3 创建第一个Servlet对象 5.3.4 Servlet配置解析 5.3.5 使用Servlet处理业务逻辑 5.3.6 掌握Servelet处理流程 5.3.7 Eclipse快速创建Servlet 5.4 一夫当关——配置并应用Servlet过滤器 5.4.1 过滤器的基本原理 ...

    Java中BeanUtils使用

    BeanUtils提供了对于符合JavaBean规范的实体类进行赋值,取值,拷贝操作的一系列方法,可以自动完成数据类型转换,方便开发者在数据交互中使用。 所有的方法都是静态方法 三个方法  1. 赋值指定成员变量对应数据  ...

    课程

    在容器中叫这个名称的对象只有一个spring项目实现步骤创建maven项目加入maven的依赖:加入spring依赖加入junit依赖创建类(接口和它的实现类创建spring需要使用的配置文件声明类的信息测试spring为javabean属性赋值...

    Java核心技术II(第8版)

    8.9.2 一个JavaBean持久化的完整示例 第九章 安全 9.1 类加载器 9.1.1 类加载器的层次结构 9.1.2 将类加载器作为命名空间 9.1.3 编写你自己的类加载器 9.2 字节码校验 9.3 安全管理器与访问权限 9.3.1 Java 平台...

    userBean标签的使用

    jsp:useBean 动作用来装载一个将在 JSP 页面中使用的 JavaBean。 setProperty 动作用于设置 useBean 中指定的 JavaBean 的属性值。 useBean 中 id 所指定的对象通过 setProperty 中对 property 指定的属性进行赋值后...

    JSP的setProperty的使用方法

    给已经实例化的javabean对象的属性赋值,一共有四种形式。  二 四种形式 三 实例 1、login.jsp &lt;&#37;@ page language=java import=java.util.* contentType=text/html; charset=utf-8 %&gt; &lt;&#37; String...

    Java开发技术大全(500个源代码).

    ancestor_1.java 另一个基类定义 anonymousInner.java 匿名内部类 base.java 定义一个基类 BaseColors.java 一个简单的接口 basePoint.java 一个测试用的基类 Colorable.java 一个子接口 ColoredPoint.java ...

Global site tag (gtag.js) - Google Analytics