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

利用反射技术实现POJO值拷贝

    博客分类:
  • Java
 
阅读更多

//原代码如下:

import java.lang.reflect.*;

public class ValueCopy{

 

/**

 *

 *功能:从第一个POJO(objFirst)类中将值拷贝到第二个POJO(objTwo)中去

 *

 *@Date:2008-12-08

 *

 */
 public void valueCopy(Object objFirst,Object objTwo)throws Exception{
  Class<?> objFirstClass = objFirst.getClass();
  Class<?> objTwoClass = objTwo.getClass();
                              
  Field[] field = objTwoClass.getDeclaredFields();
  for(int i=0;i<field.length;i++){
   String fieldName = field[i].getName();
   String firstEdh = fieldName.substring(0,1).toUpperCase();
   String setMethodName = "set"+firstEdh+fieldName.substring(1);
   String getMethodName = "get"+firstEdh+fieldName.substring(1);
   
   Method getMethod = objFirstClass.getMethod(getMethodName,new Class[]{});
   Method setMethod = objTwoClass.getMethod(setMethodName,new Class[]{field[i].getType()});
   
   Object value = getMethod.invoke(objFirst,new Object[]{});
   setMethod.invoke(objTwo,new Object[]{value});
   
  }
  
 }
 
 public static void main(String[] args){
  UserForm userForm = new UserForm();
  userForm.setUsername("狂智");
  userForm.setPassword("123456");
  userForm.setEmail("ffr@163.com");
  userForm.setAge(24);
  
  User user = new User();
  try {
   new ValueCopy().valueCopy(userForm,user);
   
   
   Class userClass = user.getClass();
   System.out.println ("-------------"+user.getClass().getName()+"-------------");
   Field[] field = userClass.getDeclaredFields();
   for(int i=0;i<field.length;i++){
    String fieldName = field[i].getName();
    String firstEdh = fieldName.substring(0,1).toUpperCase();
    String getMethodName = "get"+firstEdh+fieldName.substring(1);
    
    Method getMethod = userClass.getMethod(getMethodName,new Class[]{});
    Object value = getMethod.invoke(user,new Object[]{});
    System.out.println (fieldName+": "+value);
   }
   System.out.println ("----------------结束----------------");
   
   
     }
     catch (Exception ex) {
      ex.printStackTrace();
     }
  
 }
}

0
0
分享到:
评论

相关推荐

    java反射封装结果集内容到pojo

    当我们从数据库读出数据得到ResultSet或RowSet的时候,我们的做法是遍历结果集,然后封装到pojo里面,再封装到List,那么,每次封装是不是很麻烦呢,前段时间小弟看了下反射的东西,试着写了个类,目的在于方便封装...

    一个利用反射,把一个pojo付个另一个pojo的例子

    根据属性名相同, 把一个pojo的属性值付给另一个pojo相同属性名.

    java Pojo转Map

    通过利用反射API,我们可以轻松地实现这一转换,从而简化编程工作。当然,使用这种方式时要注意性能影响,因为反射操作通常比直接访问成员变量要慢。在大型项目中,可能需要考虑缓存映射结果,或者使用其他优化策略...

    POJO转Map.txt

    POJO转Map的基本思路是利用反射机制获取POJO的所有属性,并将其存储到Map中。具体步骤如下: 1. **判断对象是否为空**:首先检查传入的对象是否为空,如果为空则直接返回null。 2. **创建Map实例**:使用`new ...

    JDBCTemplate+JavaPOJO实现通用DAO

    在这个"JDBCTemplate+JavaPOJO实现通用DAO"的项目中,我们将探讨如何利用这两者构建一个通用的DAO层。 首先,Java POJO(Plain Old Java Object)是指那些没有特殊约束的简单Java对象,通常用于表示数据库中的实体...

    POJO In action 代码

    《POJO In Action》是一本深入探讨Plain Old Java Object(POJO)概念和技术的书籍,其核心在于如何在Java开发中有效地使用简单、无框架依赖的对象。POJOs是Java编程中最基本的元素,它们代表了纯粹的面向对象设计,...

    利用Mybatis逆向工程来生成pojo和mapper

    Mybatis逆向工程是一种强大的工具,它允许开发者根据数据库中的表结构自动生成对应的Java实体类(POJO)、数据访问对象(DAO)以及Mapper接口和XML配置文件,极大地提高了开发效率,减少了手动编写这些基础代码的...

    Mybatis生成pojo插件

    Mybatis是一款广受欢迎的Java持久层框架,它简化了数据库操作与对象模型之间的映射,提供了灵活的SQL映射和基于XML或注解的...在实际使用中,可以根据项目需求和团队规范进行个性化设置,充分利用其提供的各种功能。

    webservice1 pojo实现0配置

    - Axis2还集成了Spring框架,允许更灵活的业务逻辑集成,以及对JSON的支持,扩展了其在不同技术栈中的应用。 2. **Axis2的安装与配置**: - 用户可以从Apache官方网站下载Axis2的最新版本,例如1.4.1。 - 安装...

    SSM笔记-POJO

    综上所述,SSM笔记中的POJO部分主要讲解了如何在SpringMVC中利用POJO作为数据载体,以及SpringMVC如何自动进行模型绑定,处理HTTP请求参数,并进行数据验证。了解这些概念和实践,对于开发基于SSM的Java Web应用至关...

    数据表生成pojo

    - POJO是Java中一个普通的类,没有继承任何特定的框架接口或实现任何特定的规范。它只是一个包含属性(字段)和方法(包括getter和setter)的对象,用于封装业务数据。 - 在数据库操作中,POJO类通常代表数据库中...

    SSM项目实战pojo类

    在Java Web开发中,SSM(Spring、Spring MVC和MyBatis)是一个常见的技术栈,用于构建高效、灵活的企业级应用程序。在这个“SSM项目实战pojo类”中,我们主要探讨的是数据模型层,也就是POJO(Plain Old Java Object...

    自己使用Swing实现的POJOGenerator(POJO代码生成器 v1.2)

    本POJO代码生成器采用Java的Swing技术编码实现,是绿色免费工具,可以自由传播。 由于本工具的内部实现较菜,所以还请反编译高手手下留情,让我留几分颜面。^_^ 作者本人只用过Oracle、MySQL、MS SQL Server这三款...

    json2pojo功能有点麻烦

    参照https://github.com/joelittlejohn/jsonschema2pojo/wiki/Getting-Started的步骤Using jsonschema2pojo within your Java project (embedded)

    POJO javaBean EJB JNDI 理解及区别

    POJO的主要特征是拥有私有属性和对应的getter/setter方法,用于封装数据,类似于数据传输对象(DTO)或值对象。POJO不包含业务逻辑或持久化逻辑,其主要作用是在不同的层级之间传递数据。在使用Hibernate框架时,...

    hibernate tools 生成pojo

    源码层面,Hibernate Tools是开源的,开发者可以深入研究其生成POJO的实现过程,理解其工作原理,这对于优化自定义的代码生成规则或是扩展工具功能非常有帮助。 **六、总结** 总的来说,Hibernate Tools是Java开发...

    Struts2 Pojo(六)

    在本篇“Struts2 Pojo(六)”中,我们将深入探讨Struts2如何利用Pojo来增强其灵活性和可维护性。 首先,让我们理解什么是Pojo。Pojo是一个没有特殊限制的普通Java对象,不包含任何框架特定的代码,如注解或接口...

    hibernate生成pojo

    ### Hibernate生成POJO详解 #### 一、简介 在Java开发中,Hibernate作为一个...此外,熟悉Hibernate的核心概念和技术细节对于充分利用其功能至关重要。希望本文能帮助您更好地理解和掌握Hibernate生成POJO的方法。

    netty pojo 文档

    netty pojo netty pojo替换 channelbuffer

Global site tag (gtag.js) - Google Analytics