Java Object Clone

        User user = new User();
user.setName("tom");
User user1 = new User();
user1.setName("jerry");
List<User> list = new ArrayList<>();
list.add(user1);
user.setChildren(list);
user.setUser(user1);
System.out.println(user); User2 user2 = new User2();
BeanUtils.copyProperties(user2,user);
System.out.println(user2);
List<User2> children = user2.getChildren();
// 此处会出现错误
for (User2 user21 :children ) {
System.out.println(user21);
}
User user3 = (User) BeanUtils.cloneBean(user);
System.out.println(user3);

user:

package com.test;

import java.util.List;

public class User {
private String name;
private List<User> children;
private User user; public User getUser() {
return user;
} public void setUser(User user) {
this.user = user;
} @Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", children=" + children +
", user=" + user +
'}';
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public List<User> getChildren() {
return children;
} public void setChildren(List<User> children) {
this.children = children;
}
}

user2:

package com.test;

import java.util.List;

public class User2 {
private String name;
private List<User2> children; private User2 user2; public User2 getUser2() {
return user2;
} public void setUser2(User2 user2) {
this.user2 = user2;
} @Override
public String toString() {
return "User2{" +
"name='" + name + '\'' +
", children=" + children +
", user2=" + user2 +
'}';
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public List<User2> getChildren() {
return children;
} public void setChildren(List<User2> children) {
this.children = children;
}
}

pom:

<!-- https://mvnrepository.com/artifact/commons-beanutils/commons-beanutils -->
<dependency>
<groupId>commons-beanutils</groupId>
<artifactId>commons-beanutils</artifactId>
<version>1.9.3</version>
</dependency>

注意和spring beanutils的区别:

https://blog.csdn.net/langqiao123/article/details/72961383/

传说spring Beanutils的性能要更好一些;

Java Object Clone的更多相关文章

  1. java Object对象的clone方法

    参考copy链接:http://blog.csdn.net/bigconvience/article/details/25025561 在看原型模式,发现要用到clone这个方法,以前和朋友聊过,没怎 ...

  2. 关于Java的Object.clone()方法与对象的深浅拷贝

    文章同步更新在个人博客:关于Java的Object.clone()方法与对象的深浅拷贝 引言 在某些场景中,我们需要获取到一个对象的拷贝用于某些处理.这时候就可以用到Java中的Object.clon ...

  3. 【java】对象克隆protected Object clone() throws CloneNotSupportedException

    package 对象克隆; class A implements Cloneable{//要具备clone()功能必须要实现Cloneable接口,此接口里无方法,只起标识作用. private St ...

  4. Java 基础 - Object.clone()深拷贝和浅拷贝

    作者:YSOcean 出处:http://www.cnblogs.com/ysocean/ 本文版权归作者所有,欢迎转载,但未经作者同意不能转载,否则保留追究法律责任的权利.   ---------- ...

  5. 关于Java深clone 的例子学习

    之前http://www.cnblogs.com/lhppom/p/4857702.html里有提到关于Java的深克隆的学习,深浅区别就是在于仅复制对象引用和复制对象引用所指向的对象,最近在看< ...

  6. java的 clone方法

    1.java语言中没有明确提供指针的概念与用法,而实质上每个new语句返回的都是一个指针的引用,只不过在大部分情况下开发人员不需要关心如果取操作这个指针而已. 2.在java中处理基本数据类型时,都是 ...

  7. Java基础——clone()方法浅析

    一.clone的概念 clone顾名思义就是复制, 在Java语言中, clone方法被对象调用,所以会复制对象.所谓的复制对象,首先要分配一个和源对象同样大小的空间,在这个空间中创建一个新的对象.那 ...

  8. java Object类学习

    /* * Copyright (c) 1994, 2010, Oracle and/or its affiliates. All rights reserved. * ORACLE PROPRIETA ...

  9. java Object 类

    Object o=new Object(); 其中有两个受保护的方法:             1.protected void finalize()             2.protected ...

随机推荐

  1. Python如何将RGB图像转换为Pytho灰度图像?

    我正尝试使用matplotlib读取RGB图像并将其转换为灰度.在matlab中,我使用这个: 1 img = rgb2gray(imread('image.png')); 在matplotlib t ...

  2. python opencv3 视频文件的读写

    git: https://github.com/linyi0604/Computer-Vision # coding:utf8 import cv2 """ 读取视频文件 ...

  3. bzoj 3931 最短路+最大流

    较水,但因为范围问题WA了两次.... /************************************************************** Problem: 3931 Us ...

  4. MySQL规约(阿里巴巴)

    建表规约 [强制]表达是与否概念的字段,必须使用 is _ xxx 的方式命名,数据类型是 unsigned tinyint ( 1 表示是,0 表示否 ) ,此规则同样适用于 odps 建表. 说明 ...

  5. php发送get、post请求的6种方法代码示例

    本文主要展示了php发送get.post请求的6种方法的代码示例,分别为使用file_get_contents .fopen.fsockopen.curl来发送GET和POST请求,代码如下: 方法1 ...

  6. python开发_webbrowser_浏览器控制模块

    ''' python的webbrowser模块支持对浏览器进行一些操作 主要有以下三个方法: webbrowser.open(url, new=0, autoraise=True) webbrowse ...

  7. dos系统下的游戏~ 不断更新中

    #include <cstdio> #include <cmath> #include <cstring> #include <ctime> #incl ...

  8. Installing Node.js via package manager | Node.js

    Installing Node.js via package manager | Node.js   i386 (32-bit)

  9. sqlserver存储过程循环写法

    用游标,和WHILE可以遍历您的查询中的每一条记录并将要求的字段传给变量进行相应的处理==================DECLARE @A1 VARCHAR(10),@A2 VARCHAR(10) ...

  10. [Mysql]MySQL 服务无法启动。

    摘要 在官网下载了mysql,版本mysql-5.7.17-winx64,免安装的压缩包,解压后.放在MySql的文件夹中.电脑系统win10 x64. 配置文件 # For advice on ho ...