1. 方法1:把JavaBeanfrom的值自动setto,省略了自己从fromget然后再setto

import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;

  1. public static Object convertBean2Bean(Object from, Object to) {
  2. try {
  3. BeanInfo beanInfo = Introspector.getBeanInfo(to.getClass());
  4. PropertyDescriptor[] ps = beanInfo.getPropertyDescriptors();
  5.  
  6. for (PropertyDescriptor p : ps) {
  7. Method getMethod = p.getReadMethod();
  8. Method setMethod = p.getWriteMethod();
  9. if (getMethod != null && setMethod != null) {
  10. try {
  11. Object result = getMethod.invoke(from);
  12. setMethod.invoke(to, result);
  13. } catch (Exception e) {
  14. // 如果from没有此属性的get方法,跳过
  15. continue;
  16. }
  17. }
  18. }
  19. } catch (Exception e) {
  20. e.printStackTrace();
  21. }
  22.  
  23. return to;
  24. }
  25.  
  26. 方法2
  27. /**
  28. * 不支持to继承(to是其他bean的子类)
  29. */

import java.lang.reflect.Field;
import java.lang.reflect.Method;

  1. public static Object coverBean2Bean(Object from, Object to) {
  2. Class fClass = from.getClass();
  3. Class tClass = to.getClass();
  4. // 拿to所有属性(如果有继承,父类属性拿不到)
  5. Field[] cFields = tClass.getDeclaredFields();
  6. try {
  7. for (Field field : cFields) {
  8. String cKey = field.getName();
  9. // 确定第一个字母大写
  10. cKey = cKey.substring(0, 1).toUpperCase() + cKey.substring(1);
  11.  
  12. Method fMethod;
  13. Object fValue;
  14. try {
  15. fMethod = fClass.getMethod("get" + cKey);// public方法
  16. fValue = fMethod.invoke(from);// 取getfKey的值
  17. } catch (Exception e) {
  18. // 如果from没有此属性的get方法,跳过
  19. continue;
  20. }
  21.  
  22. try {
  23. // 用fMethod.getReturnType(),而不用fValue.getClass()
  24. // 为了保证get方法时,参数类型是基本类型而传入对象时会找不到方法
  25. Method cMethod = tClass.getMethod("set" + cKey, fMethod.getReturnType());
  26. cMethod.invoke(to, fValue);
  27. } catch (Exception e) {
  28. // 如果to没有此属性set方法,跳过
  29. continue;
  30. }
  31. }
  32. } catch (Exception e) {
  33. e.printStackTrace();
  34. }
  35.  
  36. return to;
  37. }
  38.  
  39. 3.打印bean
  40.  
  41. /** * 打印bean信息
  42. */
  43. public static void printInvoke(Object object) {
  44. Method[] ms = object.getClass().getMethods();
  45. String str = spare;
  46. str += "start log object: " + object.getClass().getSimpleName() + "\r\n";
  47. str += spare;
  48. System.out.print(str);
  49.  
  50. for (int i = 0; i < ms.length; i++) {
  51. if (ms[i].getName().indexOf("get") != -1
  52. && !ms[i].getName().equals("getClass")) {
  53. try {
  54. System.out.println(ms[i].getName() + " = "
  55. + ms[i].invoke(object));
  56. } catch (Exception e) {
  57. e.printStackTrace();
  58. }
  59. }
  60. }
  61.  
  62. System.out.println(spare);
  63. }

javabean对象自动赋值给另一个javabean对象的更多相关文章

  1. Python把同一个对象循环赋值给另外一个变量

    Python把同一个对象循环赋值给另外一个变量,修改一个对象,其他对象也修改了 >>> row=['_'] * 3 >>> board = [] >>& ...

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

    最近开发公司的一个项目,因项目不是很大的项目,所以仅仅采用了spring MVC框架,但是数据库很多表中的字段至少15个,这样当每次将数据库表中的数据取出来放入javabean中时,写setXXX方法 ...

  3. 复制JAVABEAN中的属性到另外一个JAVABEAN中

    下午写了一个属性复制方法,记录如下: class POUtil{ /** * * Function : 将一个source中的属性到复制到dest * @author : Liaokailin * C ...

  4. 不可或缺 Windows Native (19) - C++: 对象的动态创建和释放, 对象的赋值和复制, 静态属性和静态函数, 类模板

    [源码下载] 不可或缺 Windows Native (19) - C++: 对象的动态创建和释放, 对象的赋值和复制, 静态属性和静态函数, 类模板 作者:webabcd 介绍不可或缺 Window ...

  5. 如何复制一个java对象(浅克隆与深度克隆)

    在项目中,有时候有一些比较重要的对象经常被当作参数传来传去,和C语言的值传递不同,java语言的传递都是引用传递,在任何一个地方修改了这个对象的值,就会导致这个对象在内存中的值被彻底改变.但是很多时候 ...

  6. C++中的对象的赋值和复制

    对象的赋值 如果对一个类定义了两个或多个对象,则这些同类的对象之间可以互相赋值,或者说,一个对象的值可以赋给另一个同类的对象.这里所指的对象的值是指对象中所有数据成员的值. 对象之间的赋值也是通过赋值 ...

  7. 实现了IEnumerable接口的GetEnumerator 即可使用 Foreach遍历,返回一个IEnumerator对象

    #region 程序集 mscorlib.dll, v4.0.0.0 // C:\Program Files (x86)\Reference Assemblies\Microsoft\Framewor ...

  8. C++ 对象的赋值和复制 基本的

    对象的赋值 如果对一个类定义了两个或多个对象,则这些对象之间是可以进行赋值,或者说,一个对象的值可以赋值给另一个同类的对象.这里所指的值是指对象中所有数       据的成员的值.对象之间进行赋值是“ ...

  9. 利用dynamic解决匿名对象不能赋值的问题

    原文:利用dynamic解决匿名对象不能赋值的问题 关于匿名对象 匿名对象是.Net Framework 3.0提供的新类型,例如: }; 就是一个匿名类,搭配Linq,可以很灵活的在代码中组合数据, ...

随机推荐

  1. C++之类和对象——C++ primer plus学习(一)

    一.类的构造函数和析构函数 1.构造函数:    1)试图将类成员名称用作构造函数的参数名是错误的.    2)构造函数的参数表示的不是类成员, 而是赋给类成员的值.    3)为了避免这种混乱,一种 ...

  2. (原)Ubuntu14中安装GraphicsMagick

    转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5661439.html 参考网址: http://comments.gmane.org/gmane.co ...

  3. JavaScript当中的eval函数

    eval函数 eval函数接收一个由JavaScript语句组成的字符串,并且返回字符串中最后一条语句的返回值,如果最后一条语句没有返回值,那么eval函数返回undefined.如果传递给eval函 ...

  4. 给Array添加删除重复元素函数

    给Array本地对象增加一个原型方法,它用于删除数组中重复的元素(可能有多个重复), 返回值是一个包含被删除的重复条目的新数组. Array.prototype.distinct = function ...

  5. python-整理-vs2013新建文件编码

    使用VS2013新建py包和py空文件还有文本文件时发现编码是936.如果代码中写了中文关闭后再打开就乱码了. 找了几个小时,发现模板文件就是936编码,奇怪的是pyclass等其它模板是正常的UTF ...

  6. ORACLE的客户端如何连接到数据库

    如何连接oracle数据库及故障解决办法   如何配置才能使客户端连到数据库:     要使一个客户端机器能连接oracle数据库,需要在客户端机器上安装oracle的客户端软件,唯一的例外就是jav ...

  7. 继续Python爬虫

    先贴上代码 # coding:utf-8 import urllib2 import urllib import re gjc = urllib.quote('你好') url = 'http://s ...

  8. KeyTool

    http://ln-ydc.iteye.com/blog/1335213 http://lukejin.iteye.com/blog/605634

  9. 华为IC设计人员的薪酬(5年经验28万),以及麒麟是如何脱颖而出的~

    垂直整合助力麒麟腾飞 由于ARM技术路线大幅降低了技术门槛和研发的资金和时间成本,导致ARM阵营参与者众多,加上大家都是购买ARM的CPU核与GPU核,造成产品高度同质化,市场竞争异常激烈——在价格上 ...

  10. Eclipse调试Bug的七种常用技巧(转)

        注意事项及小结: (1)Line Breakpoint:如果设置Conditional,监控的变量需要比当前行高一级block,譬如for(int i=0;i<20;i++)中的i,fo ...