`

JAVA将非空值附于别一个对象

    博客分类:
  • JAVA
 
阅读更多
import java.beans.PropertyDescriptor;
import java.lang.reflect.InvocationTargetException;
import java.util.Iterator;
import java.util.Map;

import org.apache.commons.beanutils.BeanUtilsBean;
import org.apache.commons.beanutils.DynaBean;
import org.apache.commons.beanutils.DynaProperty;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
 
 public class BeanUtil
 {
   private static Log log = LogFactory.getLog(BeanUtil.class);
 
   public static void copyNotNullProperties(Object dest, Object orig)
     throws IllegalAccessException, InvocationTargetException
   {
     BeanUtilsBean beanUtils = BeanUtilsBean.getInstance();
 
     if (dest == null) {
       throw new IllegalArgumentException("No destination bean specified");
     }
     if (orig == null) {
       throw new IllegalArgumentException("No origin bean specified");
     }
     if (log.isDebugEnabled()) {
       log.debug("BeanUtils.copyProperties(" + dest + ", " + orig + ")");
     }
 
     if ((orig instanceof DynaBean)) {
       DynaProperty[] origDescriptors = ((DynaBean)orig).getDynaClass()
         .getDynaProperties();
       for (int i = 0; i < origDescriptors.length; i++) {
         String name = origDescriptors[i].getName();
 
         if ((!beanUtils.getPropertyUtils().isReadable(orig, name)) || 
           (!beanUtils.getPropertyUtils().isWriteable(dest, name))) continue;
         Object value = ((DynaBean)orig).get(name);
         beanUtils.copyProperty(dest, name, value);
       }
     }
     else if ((orig instanceof Map)) {
       Iterator entries = ((Map)orig).entrySet().iterator();
       while (entries.hasNext()) {
         Map.Entry entry = (Map.Entry)entries.next();
         String name = (String)entry.getKey();
         if (beanUtils.getPropertyUtils().isWriteable(dest, name))
           beanUtils.copyProperty(dest, name, entry.getValue());
       }
     }
     else {
       PropertyDescriptor[] origDescriptors = beanUtils.getPropertyUtils()
         .getPropertyDescriptors(orig);
       for (int i = 0; i < origDescriptors.length; i++) {
         String name = origDescriptors[i].getName();
         if ("class".equals(name)) {
           continue;
         }
         if ((!beanUtils.getPropertyUtils().isReadable(orig, name)) || 
           (!beanUtils.getPropertyUtils().isWriteable(dest, name))) continue;
         try {
           Object value = beanUtils.getPropertyUtils().getSimpleProperty(orig, name);
           if (value != null)
             beanUtils.copyProperty(dest, name, value);
         }
         catch (NoSuchMethodException localNoSuchMethodException)
         {
         }
       }
     }
   }
 }
分享到:
评论

相关推荐

    java-validator:一个用于在类级别检查null和空值的Java验证库

    这是一个帮助程序库,用于在类级别验证Java类成员的空值和空值。 它旨在减少样板代码,即,它通过使用多个条件语句来缩短检查类的单个成员的值的时间范围。 我们甚至可以在层次结构级别上检查对象,即成员对象的成员...

    解决上传图片时request.getParameter是空值的java类

    encType="multipart/form-data" 根据上传不同,主要分两步,可以有效的解决request.getParameter(String s)是null值

    深入Java关键字null

    深入Java关键字null

    MATLAB用前值填充空值

    找出文档中的空值,并用前值填充空值,分为大跳(中间有连续空值),和小跳,中间只有一个空值

    java程序员面试题

    HashMap允许将null作为一个entry的key或者value,而Hashtable不允许。 HashMap把Hashtable的contains方法去掉了,改成containsvalue和containsKey。因为contains方法容易让人引起误解。 Hashtable继承自Dictionary类...

    空值的判断,空值的过滤,补全空值.ipynb

    空值的判断,空值的过滤,补全空值.ipynb

    Java支持库2.0#0版

    如果在没有配置好Java环境的情况下使用本支持库,所有对象方法都将返回空值(假,0,“”)。本支持库安装后,将自动在易语言主菜单中添加一项工具菜单,[工具]-[JavaLib:Java类型签名查询]。这是一个查询“Java ...

    JAVA判断空值方法原理解析

    主要介绍了JAVA判断空值方法原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    空对象模式

    在空对象模式(Null Object Pattern)中,...在空对象模式中,我们创建一个指定各种要执行的操作的抽象类和扩展该类的实体类,还创建一个未对该类做任何实现的空对象类,该空对象类将无缝地使用在需要检查空值的地方。

    MySQL数据库:空值比较.pptx

    MySQL有一个特殊的等于运算符“”,当两个表达式彼此相等或都等于空值时,它的值为TRUE,其中有一个空值或都是非空值但不相等,这个条件就是FALSE。 【例】 查询Sell表中还未收货的订单情况。 SELECT * FROM Sell ...

    Java支持库2.0#0版(静态版)

    如果在没有配置好Java环境的情况下使用本支持库,所有对象方法都将返回空值(假,0,“”)。本支持库安装后,将自动在易语言主菜单中添加一项工具菜单,[工具]-[JavaLib:Java类型签名查询]。这是一个查询“Java ...

    JAVA面试基础知识题

    25、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递 ...值:只有HashMap可以让你将空值作为一个表的条目的key或value

    详解Java去除json数据中的null空值问题

    主要介绍了详解Java去除json数据中的null空值问题,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

    oracle处理空值的方法

    oracle处理空值的方法

    mybatis 报空值异常

    mybatis 报空值异常及其解决办法

    java-servlet-api.doc

    如果有助于你处理应用的数据需求,你也许需要绑定对象到Session中,你可以通过一个唯一的名字绑定任何的对象到Session中,这时,你需要使用HttpSession对象。任何绑定到Session上的对象都可以被处理同一会话的...

    未将对象引用设置到对象的实例问题原因

    “System.NullReferenceException: 未将对象引用设置到对象的实例”问题可能原因如下: 1、ViewState 对象为Null。 2、DateSet 空。 3、sql语句或Datebase的原因导致DataReader空。 4、声明字符串变量时未赋空值就...

    未将对象引用设置到对象的实例--可能出现的问题总结

    1、ViewState 对象为Null。 2、DateSet 空。 3、sql语句或Datebase的原因导致DataReader空。 4、声明字符串变量时未赋空值就应用变量。 5、未用new初始化对象。...10、重复定义造成未将对象引用设置到对象的实例错误.

Global site tag (gtag.js) - Google Analytics