`

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)
         {
         }
       }
     }
   }
 }
分享到:
评论

相关推荐

    使用XStream是实现XML与Java对象的转换(4)--转换器

    XStream是一个强大的库,专门用于XML与Java对象之间的互相转换。这篇博文将深入探讨如何利用XStream的转换器功能来优化这一过程。 XStream的核心原理是通过反射机制自动将Java对象映射到XML结构,并反之亦然。然而...

    深入Java关键字null

    在Java语言中,`null`是一个非常重要的关键字,用于表示一个未确定的对象引用。这意味着你可以将`null`赋给任何引用类型变量,而不能将其赋给基本类型变量。例如: - 错误示例:`int a = null;` - 正确示例:`...

    JAVA判断空值方法原理解析

    在 Java 编程语言中,判断空值是一个常见的操作,特别是在字符串处理中。Java 提供了多种方法来判断字符串是否为空,但这些方法的实现原理和效率却存在很大的差异。本文将深入探讨 Java 判断空值方法的原理,分析每...

    使用jackson完成json与java对象的互相转换实例

    要将一个Java对象转换为JSON字符串,我们可以使用`ObjectMapper`的`writeValueAsString()`方法。假设我们有一个简单的User类: ```java public class User { private String name; private int age; // getters...

    SuperMap Objects Java指定值设为栅格数据的空值

    接着,我们可以创建一个`DatasetRaster`对象来表示栅格数据集,通过`DataFactory.open()`方法打开一个栅格数据文件。这个数据集通常包含了一个或多个`Grid`对象,每个`Grid`代表了数据的一个层。 要将指定值设为...

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

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

    Java对象与Json之间的互相转换的jar包

    在Java编程中,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,因其简洁、易读、易于解析的特点,被广泛应用于Web服务和应用程序之间的数据传输。在处理JSON数据时,我们通常需要将Java对象转换为...

    java对象转Json 需要用到的所有包

    Gson是Google提供的一个库,也可以轻松地在Java对象和JSON字符串之间进行转换。如果你的压缩包中有Gson的相关jar包,那么可能是: - `gson.jar`:包含了整个Gson库,用于对象到JSON的转换。 3. **使用示例**: ...

    python处理csv中的空值方法

    处理完数据后,使用`csv.writer`对象将处理结果写入到指定的CSV文件中。这里需要注意的是,`writer`对象被配置为写入UTF-8编码的文件,这对于处理中文数据尤为重要,因为这样可以避免编码错误导致的乱码问题。 最后...

    MATLAB用前值填充空值

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

    JSON串转换映射成java对象

    1. **Jackson库**:Jackson是Java中最流行的JSON处理库之一,提供了解析JSON到Java对象以及将Java对象序列化为JSON的功能。使用`ObjectMapper`类,可以轻松完成转换。例如: ```java ObjectMapper mapper = new ...

    SQL Server中的空值问题.pdf

    SQL Server 中的空值问题是一个非常重要且复杂的主题。 空值的存在可以导致数据处理和查询结果的不确定性。因此,了解空值的语义、关系模型和三值逻辑在 SQL Server 中的应用非常重要。 空值的语义 空值可以分为三...

    c# 日期控件 扩展 空值

    本项目中,我们探讨的是一个自定义的日期控件,它具有扩展功能,支持空值,同时结合了下拉式树形控件的设计。这种控件的实现能够提供更灵活的用户交互体验,特别是在需要用户选择日期但又允许不输入的情况下。 首先...

    探讨SQL Server数据库中空值处理技巧

    为了解决这些问题,我们可以使用 ISNULL 函数将空值替换成一个默认值,从而避免空值对统计结果和外键约束的影响。同时,我们也可以使用其他函数,例如 COALESCE 函数和 CASE 函数,来处理空值。

    java程序员面试题

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

    json与对象相互转换系列处理

    JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于JavaScript的一个子集,易于人阅读和编写,同时也易于机器解析和生成。在IT领域,JSON被广泛应用于Web服务和应用程序之间的数据传输,因为它...

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

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

    java面向对象学生信息管理系统

    总的来说,"Java面向对象学生信息管理系统"是一个涵盖了Java语言特性、面向对象设计原则、数据库操作、用户界面构建等多个方面的综合性项目。开发者需要具备扎实的Java基础,良好的编程习惯,以及对软件工程的理解,...

    Java支持库2.0#0版

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

    matlab 空值预处理

    `这个匿名函数,将所有空值替换为`replacementValue`。此外,还可以选择使用统计方法,如均值、中位数或众数填充空值,以保持数据的分布特性。 对于字符型数据,处理方式略有不同。MATLAB中的字符串数组可以包含空...

Global site tag (gtag.js) - Google Analytics