最近在copybean时,无意中遇到一个问题,
一个java源文件中存在几个类的情况下,BeanUtils.copyProperties不能成功,整理如下,供大家探讨。
情况1(copy失败)、(一个java源文件中存在3个类),如下:
BeanCopy.java
package com.hp9016.test.copyBean;
import java.lang.reflect.InvocationTargetException;
import org.apache.commons.beanutils.BeanUtils;
public class BeanCopy {
public static void main( String[] args ) {
BeanFrom from = new BeanFrom();
from.setTestString( "testString" );
BeanTo to = new BeanTo();
try {
BeanUtils.copyProperties( to, from );
} catch ( IllegalAccessException e ) {
e.printStackTrace();
} catch ( InvocationTargetException e ) {
e.printStackTrace();
}
System.out.println( to.getTestString() );
}
}
class BeanFrom {
private String _testString;
public String getTestString() {
return _testString;
}
public void setTestString( String testString ) {
this._testString = testString;
}
}
class BeanTo {
private String _testString;
public String getTestString() {
return _testString;
}
public void setTestString( String testString ) {
this._testString = testString;
}
}
输出的是:null!
但是把这三个类分别写在三个源文件中就没有关系,像这样
情况2(copy成功)、
BeanCopy.java
package com.hp9016.test.copyBean;
import java.lang.reflect.InvocationTargetException;
import org.apache.commons.beanutils.BeanUtils;
public class BeanCopy {
public static void main( String[] args ) {
...代码同上
}
}
BeanFrom.java
package com.hp9016.test.copyBean;
public class BeanFrom {
...代码同上
}
BeanTo.java
package com.hp9016.test.copyBean;
public class BeanTo {
...代码同上
}
输出:testString
正确。
我又试了下,
情况3(出现异常)、
入口类和源类(即BeanCopy和BeanFrom类)写在一个源文件(即BeanCopy.java)中,则会抛出
[java.lang.reflect.InvocationTargetException: Cannot set testString]的异常。
情况4(copy失败)、
入口类和目标类(即BeanCopy和BeanTo类)写在一个源文件(即BeanCopy.java)中,输出的结果仍然是null
用的是1.7的jar包,commons-beanutils-1.7.0-src.zip
http://archive.apache.org/dist/commons/beanutils/source/
看来面前只能先慢慢看源码了,有科学解释的别憋着啊
分享到:
相关推荐
一个BeanUtils.copyProperties的小型快速替代。 起因 由于BeanUtils(Spring或Apache Commons)的copyProperties实现是利用反射实现的,它在大量调用时具有比较严重的性能问题。 BeanMapper通过javassist类库实现在...
Java Beanutils.copyProperties() 方法是 Java 中一个非常有用的工具,主要用于将一个 JavaBean 的属性复制到另一个 JavaBean 中。今天,我们将详细介绍 Java Beanutils.copyProperties() 的用法和原理。 在 Java ...
在这个`convertList2List`方法中,我们遍历输入列表(input),为每个元素创建一个新的目标对象实例(target),然后调用`BeanUtils.copyProperties`进行属性复制,最后将新对象添加到输出列表(output)。...
在Java开发中,Apache Commons BeanUtils库是一个非常实用的工具包,它提供了许多方便的方法来操作JavaBeans。本文将深入探讨`BeanUtilsBean`对象复制的功能,特别关注它如何实现类型自动转换。`BeanUtilsBean`是...
1. **属性拷贝**:BeanUtils.copyProperties()方法可以实现两个JavaBean对象之间的属性值拷贝,极大地减少了代码量。 2. **动态属性访问**:通过BeanUtils.getProperty()和BeanUtils.setProperty(),我们可以动态地...
Apache Commons BeanUtils是Apache软件基金会的一个开源项目,它提供了一组实用工具类,用于简化JavaBean对象的操作。这个库的核心是`org.apache.commons.beanutils`包,其中包含了大量的辅助方法,使得开发者可以...
此为BeanUtils的实例。其中apache的包有一个小的BUG已在其中说明。
互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术...
commons-beanutils-1.8.0.jar beanutils.jar beanutils.jar工具包
1. **属性复制**:BeanUtils.copyProperties()方法允许我们轻松地将一个Java Bean对象的属性值复制到另一个Bean对象。这对于在不同对象间传递数据或者创建对象的副本非常有用。例如,如果你有一个UserBean,你想创建...
1. **属性复制**:BeanUtils.copyProperties()是其最常用的功能之一,它能将一个对象的所有属性值复制到另一个对象中,大大减少了手动赋值的工作。 2. **类型转换**:BeanUtils.setProperty()和BeanUtils....
然而,如果在服务器端没有正确引入"commons-beanutils.jar",那么在试图将Java对象转换为JSON时可能会出现问题。因为BeanUtils库包含了对象到JSON转换过程中必要的功能,比如属性的自动转换和映射。 "jar"文件是...
标题中的"commons.jar +commons-beanutils.jar"指的是Apache Commons项目中的两个核心组件:commons.jar和commons-beanutils.jar。Apache Commons是Java编程语言中的一系列小型实用程序库,为开发人员提供了各种常见...
commons-beanutils.jar commons-beanutils.jar
5. **拷贝属性**:`BeanUtils.copyProperties()`方法可以实现对象间的属性深度拷贝,这对于创建对象副本或者在不同对象间传递数据十分便利。 6. **避免空指针异常**:BeanUtils库在处理null值时会进行保护,避免因...
Beanutils是一个强大的Java工具类库,主要用于简化JavaBean的属性操作。它提供了一系列的方法帮助开发者处理Bean的属性读取、设置以及转换等问题,尤其在处理复杂的Bean层级结构时表现突出。 #### 二、属性的动态...
例如,我们可以使用`BeanUtils.copyProperties()`方法快速地将一个JavaBean的属性值复制到另一个JavaBean上。但请注意,这种方法默认会忽略源对象中不存在于目标对象的属性,而目标对象中未在源对象中找到的属性将...