java 复制实体类_Java实现两个实体类相同属性的复制/拷贝
在两个实体类里,有相同的属性,有不同的属性,相同名称的属性类型还可能不同,如何实现相同属性的拷贝/复制呢?
实体类
代码清单1:Neo4jNode.java
package com.graph.domain;
import lombok.Data;
import java.util.HashMap;
import java.util.Map;
/**
* @Author:-https://www.4spaces.org
*/
@Data
public class Neo4jNode {
private String id;
private String label;
private String labelName;
private String typeUri;
private Double x;
private Double y;
private Map properties = new HashMap<>();
}
代码清单2:SigmaNode.java
package com.graph.domain;
import lombok.Data;
import java.util.List;
import java.util.Map;
/**
* @Author:-https://www.4spaces.org
*/
@Data
public class SigmaNode {
private String id;
private String label;
private String labelName;
private String typeUri;
private Double x;
private Double y;
private List> properties;
}
方式1:org.springframework.beans.BeanUtils
package com.graph.domain;
import com.alibaba.fastjson.JSON;
import org.springframework.beans.BeanUtils;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class BeanCopyExample {
public static void main(String[] args) {
SigmaNode sigmaNode = new SigmaNode();
sigmaNode.setId("1");
sigmaNode.setLabel("https://www.4spaces.org");
sigmaNode.setLabelName("");
Map propertieMap = new HashMap<>();
propertieMap.put("title", "博客");
propertieMap.put("subject", "技术");
List> properties = new ArrayList<>();
properties.add(propertieMap);
sigmaNode.setProperties(properties);
Neo4jNode neo4jNode = new Neo4jNode();
BeanUtils.copyProperties(sigmaNode, neo4jNode);
System.out.println(JSON.toJSONString(neo4jNode));
}
}
方式2:org.apache.commons.beanutils.BeanUtils
package com.graph.domain;
import com.alibaba.fastjson.JSON;
import org.apache.commons.beanutils.BeanUtils;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class BeanCopyExample {
public static void main(String[] args) {
SigmaNode sigmaNode = new SigmaNode();
sigmaNode.setId("1");
sigmaNode.setLabel("https://www.4spaces.org");
sigmaNode.setLabelName("");
Map propertieMap = new HashMap<>();
propertieMap.put("title", "博客");
propertieMap.put("subject", "技术");
List> properties = new ArrayList<>();
properties.add(propertieMap);
sigmaNode.setProperties(properties);
Neo4jNode neo4jNode = new Neo4jNode();
try {
BeanUtils.copyProperties(sigmaNode, neo4jNode);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
System.out.println(JSON.toJSONString(neo4jNode));
}
}
总结
由于两个实体类properties属性类型不一样,org.apache.commons.beanutils.BeanUtils会抛出:java.lang.IllegalArgumentException异常,而org.springframework.beans.BeanUtils则不会对该属性赋值,不会抛出异常。
参考文章:
java 复制实体类_Java实现两个实体类相同属性的复制/拷贝相关推荐
- java定义三角类_Java先创建一个point类然后定义trianglete类,在trianglete类中定义三个point的实体表示三角形的三个点。...
Java先创建一个point类然后定义trianglete类,在trianglete类中定义三个point的实体表示三角形的三个点. 关注:197 答案:1 mip版 解决时间 2021-01-3 ...
- java封装对象实体类_Java 接口自动化系列--实体类之entity封装
实体包entity下面有4个类,主要存放java对象,每个类必须有私有属性,空参构造,get set方法 具体excel中数据信息见---工具类excel文章 1.API类 解析excel中接口信息的 ...
- java虚拟机预先加载哪些类_Java虚拟机JVM学习02 类的加载概述
Java虚拟机JVM学习02 类的加载概述 类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对 ...
- java中怪物移动_java中两大怪物,附带面试题!
最近老是有小伙伴问类和Object相关的问题,感觉还是很多人对此不是很明白,那我们今天就干掉这两个怪物. 类介绍 Java 程序是由若干个类组成的,类也是面向对象编程思想的具体实现. 以下为类的定义: ...
- java对象生命周期_Java对象生命周期和类生命周期
原标题:Java对象生命周期和类生命周期 作者:彭空空 链接:https://www.jianshu.com/p/25ea857ba78b 导读 对象的生命周期 类的加载机制 类的生命周期 类加载器 ...
- java操作文件爱女_Java的IO操作---File类
目标 1)掌握File类作用 2)可以使用file类中方法对文件进行读写操作. File类 唯一与文件有关的类.使用file类可进行创建或删除操作,要想使用File类,首先观察File类的构造方法. ...
- java构造一个水果类_Java基础入门之Object类、匿名内部类、构造方法的继承解析...
前言 大家好,我是Java进阶者.这篇文章我们主要介绍Java基础中的Object类.匿名内部类.构造方法的继承知识,一起来学习下吧! 一.Object类 1.Object类是所有类的父类,所有类都继 ...
- java正则表达式类_java中正则表达式之Pattern类与Matcher类
java中正则表达式之Pattern类与Matcher类 ======================================================================= ...
- java远程代码注入_Java RMI远程反序列化任意类及远程代码执行解析(CVE-2017-3241 )...
原标题:Java RMI远程反序列化任意类及远程代码执行解析(CVE-2017-3241 ) 本打算慢慢写出来的,但前几天发现国外有研究员发了一篇关于这个CVE的文章,他和我找到的地方很相似.然而不知 ...
最新文章
- c/c++内存机制(一)(原)
- VC++动态链接库(DLL)编程(一)――理解库
- 338. Counting Bits
- 个人觉得非常好的B树,B+树的总结
- 【Groovy】map 集合 ( map 集合定义 | 通过 getClass 函数获取 map 集合的类型 | 代码示例 )
- scp时候出现ssh Connection refused的解决方案
- python 多进程共享变量manager_python 进程间共享数据 multiprocessing 通信问题 — Manager...
- P3195 [HNOI2008]玩具装箱TOY(斜率优化)
- E: 无法获得锁 /var/lib/dpkg/lock-frontend - open (11: 资源暂时不可用) E: 无法获取 dpkg 前端锁 (/var/lib/dpkg/lock-front
- 北语18春《计算机网络技术》作业4,北语18春《计算机网络技术》作业4
- 华为郭平:很愿意使用高通芯片制造手机
- 中判断字符串是否为空_自己动手编写VBA代码,判断一个工作表是否为空,然后删除它...
- 创建模式--辛格尔顿
- mysql是slot_技术分享 | MySQL 主机该如何配置 fs.aio-max-nr
- 步进电机驱动器单片机控制电路
- Verilog语法练习
- chrome 插件开发指南
- GO中时间转换到毫秒
- Hadoop简介 4V特征和3个核心
- 英语文本处理工具库——spaCy
热门文章
- MySQL - 常用语句学习
- js中session的使用
- 检索 COM 类工厂中 CLSID 为 {{10020200-E260-11CF-AE68-00AA004A34D5}} 的组件时失败解决办法...
- 管理理念:灵活应对客户的不满,把他们转换成永远忠诚的客户
- 免费利用python把pdf格式转docx
- Jenkins 日程表配置
- 站长杂谈:这样的内容制作者真的很可爱
- 怎么把线稿提取出来_「推荐」线稿应该如何提取?教你最简单的提取线稿技巧...
- 金立手机创始人:山寨手机商两年后或只剩20家
- c语言作业冰雹猜想,C语言编程实现冰雹猜想的算法,并测算各个自然数到达4-2-1谷底(即N等于4,2,1结束后)所经过的变换次数。...