`
goodscript
  • 浏览: 73277 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

对象拷贝的陷阱【把人装进了狗笼里】

阅读更多
当你使用commons-beanutils.jar插件的BeanUtils.copyProperties对象拷贝功能时,尤其是涉及到对象深度拷贝的时候尽量避免下面例子:
不要把人装进了狗笼里面

List<Dog>本来只能添加Dog 但是却从里面取出一个Person
import java.util.List;

public class Dogs {

	private String id;
	private List<Dog> data;

	public List<Dog> getData() {
		return data;
	}

	public void setData(List<Dog> data) {
		this.data = data;
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

}


import java.util.List;

public class Persons {

	private String id;
	private List<Person> data;

	public List<Person> getData() {
		return data;
	}

	public void setData(List<Person> data) {
		this.data = data;
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

}

import java.util.Date;

public class Person {

	private String name;
	private Date dateAttr;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Date getDateAttr() {
		return dateAttr;
	}
	public void setDateAttr(Date dateAttr) {
		this.dateAttr = dateAttr;
	}
	

}



import java.util.Date;

public class Dog {

	private String name;
	private Date dateAttr;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public Date getDateAttr() {
		return dateAttr;
	}

	public void setDateAttr(Date dateAttr) {
		this.dateAttr = dateAttr;
	}

}


import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import org.apache.commons.beanutils.BeanUtils;

import com.coderside.fragment.json.Dog;
import com.coderside.fragment.json.Persons;
import com.coderside.fragment.json.Dogs;
import com.coderside.fragment.json.Person;

public class Test {

	public static void main(String[] args) {
		//构造一个Persons对象
		Persons persons = new Persons();
		persons.setId("1");
		Person p = new Person();
		p.setDateAttr(new Date());
		p.setName("dog");
		List<Person> list = new ArrayList<Person>();
		list.add(p);
		persons.setData(list);
		//构造一个Dogs对象
		Dogs dogs = new Dogs();
		try {
			BeanUtils.copyProperties(dogs, persons);
			for (int i = 0; i < dogs.getData().size(); i++) {
				//打印出来的是一个人com.coderside.fragment.json.Person对象
				System.out.println(dogs.getData().get(i));
				//				下面这句看起来是正常的 运行就会抛异常
				//				Dog dog = dogs.getData().get(i);
			}
		} catch (IllegalAccessException e) {
			e.printStackTrace();
		} catch (InvocationTargetException e) {
			e.printStackTrace();
		}
	}
}
1
2
分享到:
评论
2 楼 bushuai19951203 2016-06-06  
你好,我现在的场景是,调用Person人的get方法时出现异常,有什么办法可以解决,但是值是克隆过去了
1 楼 xuranpaoche 2012-06-05  
最近也在用,使用beanutils怎么进行深度克隆呢

相关推荐

    建立流浪动物之家倡议书.doc

    房子应有足够的空间供动物活动,并且需要配备狗笼、卫生用具、保暖衣物等基础设备。此外,食品和医疗资源是必不可少的,包括狗粮、玩具、药品以及建设狗场的材料。食物来源可以通过与餐厅合作或寻求志愿者捐赠来解决...

    Goulong

    "狗笼"(Goulong)在这里可能是指一种特定的字体或者字体设计。在计算机领域,字体是用于呈现文本的图形元素,它规定了字符的形状、大小和样式。"Goulong"作为标签,我们可以推测它可能是一个具有独特风格或特征的...

    puppy_alarm

    这个小工具可让您设置唤醒时间,然后它将在指定的时间打开狗笼,让您的狗跳到床上唤醒您。固件固件基于ESP-IDF中的。 固件连接到WiFi网络并托管一个本地网站(以便连接到同一网络的任何设备都可以访问它)。 用户...

    宠物实习总结 .docx

    4. **环境卫生管理**:确保工作环境的清洁与消毒,如狗笼、地板、墙壁和水池等。 #### 自身适应情况: - 初期可能不太熟练,需要不断练习和学习。 - 在导师指导下逐步掌握各项技能,提升自己的专业水平。 - 能够...

    MTPA数值求解:双法探究,MTPA数值求解详解:两种方法的比较与应用探索,MTPA数值求解两种方法 ,MTPA数值求解; 方法一; 方法二;,MTPA数值求解的两种高效方法

    MTPA数值求解:双法探究,MTPA数值求解详解:两种方法的比较与应用探索,MTPA数值求解两种方法 ,MTPA数值求解; 方法一; 方法二;,MTPA数值求解的两种高效方法

    为什么你的switch总出bug?90%新手不知道的break语句隐藏规则.pdf

    # 踏入C语言的奇妙编程世界 在编程的广阔宇宙中,C语言宛如一颗璀璨恒星,以其独特魅力与强大功能,始终占据着不可替代的地位。无论你是编程小白,还是有一定基础想进一步提升的开发者,C语言都值得深入探索。 C语言的高效性与可移植性令人瞩目。它能直接操控硬件,执行速度快,是系统软件、嵌入式开发的首选。同时,代码可在不同操作系统和硬件平台间轻松移植,极大节省开发成本。 学习C语言,能让你深入理解计算机底层原理,培养逻辑思维和问题解决能力。掌握C语言后,再学习其他编程语言也会事半功倍。 现在,让我们一起开启C语言学习之旅。这里有丰富教程、实用案例、详细代码解析,助你逐步掌握C语言核心知识和编程技巧。别再犹豫,加入我们,在C语言的海洋中尽情遨游,挖掘无限可能,为未来的编程之路打下坚实基础!

    避坑指南:DeepSeekAPI常见错误代码解析与解决方案.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

    视频缩略图生成组件,图像格式转换另存为jpg, png, gif, bmp格式

    'Function 生成视频缩略图(ByVal 视频文件 As String, ByVal 保存缩略图的文件路径 As String, Optional ByVal jpg图像品质 As Long = 80, _ ' Optional ByVal 缩略图宽度 As Long = 500, Optional ByVal 缩略图高度 As Long = 500 _ ' , Optional 返回图像实际宽度 As Long, Optional 返回图像实际高度 As Long) As Boolean Public Function SaveImageAs(LoadImgFile As String, ByVal SaveAsImgFile As String, _ Optional ByVal JpgQuality As Long = 80, Optional hPal As Long, Optional Resolution As Single) As Boolean

    浏览器插件开发:基于DeepSeekAPI的沉浸式翻译工具实战.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

    bkall_answers(2).json

    bkall_answers(2).json

    从零实现多轮对话:DeepSeek上下文推理模式开发手册.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

    安全防护全攻略:DeepSeekAPI密钥管理与请求限流最佳实践.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

    实时对话系统构建:WebSocket长连接下的API稳定性保障方案.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

    结构化输出进阶指南:深度解析DeepSeekAPI响应数据处理技巧.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

    清华出品AI教程(15天熟练掌握DeepSeek)

    近日,一份由清华大学团队发布《DeepSeek:从入门到精通》的AI学习教程冲上了热搜,它是由清华大学新闻与传播学院新媒体研究中心元宇宙文化实验室的余梦珑博士后及其团队倾力打造,从三个方面深入剖析了DeepSeek,DeepSeek是什么?有什么用?怎么使用? 详细论述了其应用场景与使用方法,并讲解了如何通过设计精妙的提示语来提升AI的使用效率,以及丰富的实例干货。 全部104页,完整版资料已经帮大家整理好了,免费领取 资料链接: https://pan.quark.cn/s/be3b500c539c

    异常处理大全:DeepSeekAPI调用中的10个常见错误与修复方案.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

    冰点下载器珍藏版.zip

    冰点下载器珍藏版.zip

    Wallpaper Engine 壁纸一键提取

    Wallpaper Engine 是一款广受欢迎的动态壁纸软件,允许用户将各种动态、交互式壁纸应用到桌面上。其丰富的创意工坊内容让用户可以轻松下载和分享个性化的壁纸。而“一键提取”功能则是 Wallpaper Engine 中一个非常实用的工具,能够帮助用户快速提取和保存壁纸资源,方便后续使用或分享。

    基于碳达峰碳中和战略目标的城市园林绿化碳汇系统建设.pdf

    科研人员

    成本降低90%!DeepSeek与LangChain联动的API调用效率优化实验.pdf

    在日常的工作和学习中,你是否常常为处理复杂的数据、生成高质量的文本或者进行精准的图像识别而烦恼?DeepSeek 或许就是你一直在寻找的解决方案!它以其高效、智能的特点,在各个行业都展现出了巨大的应用价值。然而,想要充分发挥 DeepSeek 的优势,掌握从入门到精通的知识和技能至关重要。本文将从实际应用的角度出发,为你详细介绍 DeepSeek 的基本原理、操作方法以及高级技巧。通过系统的学习,你将能够轻松地运用 DeepSeek 解决实际问题,提升工作效率和质量,让自己在职场和学术领域脱颖而出。现在,就让我们一起开启这场实用又高效的学习之旅吧!

Global site tag (gtag.js) - Google Analytics