/**
* 浅拷贝的工具类
*/
public class PropertiesUtil { /**
* 两个类,属性名一样的元素,复制成员。
*/
public static void copy(Object source,Object target){
Class<?> sourceClass=source.getClass();
Class<?> targetClass=target.getClass();
Field [] sourceFields=sourceClass.getDeclaredFields();
//遍历成员
for (int i = 0; i < sourceFields.length; i++) {
//获取第i个元素
Field field=sourceFields[i];
//设置可见性
field.setAccessible(true);
//拿到成员名
String name = field.getName();
Field targetField=null;
try {
targetField = targetClass.getDeclaredField(name);
} catch (NoSuchFieldException e) {
//e.printStackTrace();
continue;
}
//复制属性的值
targetField.setAccessible(true);
try {
targetField.set(target,field.get(source));
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
} /**
* 两个类,属性名一样的元素,复制成员。
*/
public static <T> T copy(Object source,Class<T> targetClass){
Class<?> sourceClass=source.getClass();
T target= null;
try {
target = targetClass.newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
Field [] sourceFields=sourceClass.getDeclaredFields();
//遍历成员
for (int i = 0; i < sourceFields.length; i++) {
//获取第i个元素
Field field=sourceFields[i];
//设置可见性
field.setAccessible(true);
//拿到成员名
String name = field.getName();
Field targetField=null;
try {
targetField = targetClass.getDeclaredField(name);
} catch (NoSuchFieldException e) {
//e.printStackTrace();
continue;
}
//复制属性的值
targetField.setAccessible(true);
try {
targetField.set(target,field.get(source));
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
return target;
}
// public static void main(String[] args) {
// UserVO user1=new UserVO();
// UserVO user2=new UserVO();
// user1.setId(1L);
// user1.setUsername("zhangsan");
// copy(user1,user2);
// System.out.println(user2);
// } }

浅拷贝工具类,快速将实体类属性值复制给VO的更多相关文章

  1. mybatis-generator-core快速生成实体类和Mapper

    日常使用Mybatis少不了和实体类和 Mapper 打交道.除了我们手写来实现,还可以使用 mybatis-generator-core 来快速生成 实体类和 Mapper. 步骤如下: 1.下载 ...

  2. Idea的类中使用实体类(有@Data注解)的Get/Set方法报错

    今天从svn上面下了一个maven项目,导入到Idea中之后,发现有的类会使用实体类的Set/Get方法(全报错),导致该问题的原因就是因为实体类中没有这个方法,代码类似如下: @Data publi ...

  3. powerdesigner 使用技巧 建模工具 导出sql 导出实体类 导出word

    显示comment列 Table Properties(表属性)=>Columns(列)=>Customize Columns and Filter(自定义列过滤) 勾上 comment ...

  4. 懒人小工具:T4生成实体类Model,Insert,Select,Delete以及导出Excel的方法

    由于最近公司在用webform开发ERP,用到大量重复机械的代码,之前写了篇文章,懒人小工具:自动生成Model,Insert,Select,Delete以及导出Excel的方法,但是有人觉得这种方法 ...

  5. WPF——传实体类及绑定实体类属性

    public class User: private string _User; public string User1 { get { return _User; } set { _User = v ...

  6. xml文档的解析并通过工具类实现java实体类的映射:XML工具-XmlUtil

    若有疑问,可以联系我本人微信:Y1141100952 声明:本文章为原稿,转载必须说明 本文章地址,否则一旦发现,必追究法律责任 1:本文章显示通过 XML工具-XmlUtil工具实现解析soap报文 ...

  7. fastjson简单使用demo,@JSONField注解属性字段上与set、get方法上。实体类toString(),实体类转json的区别;_下划线-减号大小写智能匹配

    一.demo代码 @JSONField注解属性字段上与set.get方法上.使用@Data注解(lombok插件安装最下方),对属性“笔名”[pseudonym]手动重写setter/getter方法 ...

  8. idea快速生成实体类

    1.打开idea的视图,选择Database 2.选择对应的数据库[这里是mysql为例] 3.输入自己对应的内容,输入完成可点击Test Connection进行测试,成功SUCCESS 4.点击确 ...

  9. [转]掌握 ASP.NET 之路:自定义实体类简介 --自定义实体类和DataSet的比较

    转自: http://www.microsoft.com/china/msdn/library/webservices/asp.net/CustEntCls.mspx?mfr=true 发布日期 : ...

随机推荐

  1. React history.push()无法跳转 url改变页面不渲染

    一.history.push()无法跳转参考了很多文章 研究一下生命周期 render是要有state变化才会执行 BrowserHistory只有props变化 无法触发render 如下改造环境 ...

  2. ExtJS 布局-Card 布局(Card layout)

    更新记录: 2022年6月1日 开始. 2022年6月6日 发布. 1.说明 卡片布局类似牌堆,每次只有一个子组件可见,子组件几乎填满了整个容器.卡片布局常用于向导(Wizard)和选项卡(Tabs) ...

  3. awk运用三维数组进行插值获得任意经纬度处的水层沉积层地壳厚度

    awk三维数组与插值 目的:给定经纬度,获得该点地下的冰层水层沉积层和地壳的厚度 实现:awk一行命令 下载Crust1.0模型 该数据集的详细介绍见官网. 解压后有几个文件:crust1.vp,cr ...

  4. BUUCTF-乌镇峰会种图

    乌镇峰会种图 16进制拖到底一看便知

  5. 使用Java编写一个日期时间封装类

    package base; import java.util.GregorianCalendar; import java.util.StringTokenizer; import java.util ...

  6. [APIO2008]DNA 题解

    题目链接 首先呢,看到 A C G T 对应不同的权值,第一步就是把字母转换成数字. 我们分别对 A->1 C->2 G->3 T->4 进行标号,之后方便 \(\text{d ...

  7. IO多路复用epoll

    0 why: 问题来源 0.1 网络编程流程 //创建socket int s = socket(AF_INET, SOCK_STREAM, 0); //绑定IP地址和端口号port bind(s, ...

  8. Css3入门详解

    一.Css基本语法 1.Html和Css没分开时 点击查看代码 <!DOCTYPE html> <html lang="en"> <head> ...

  9. flashplayer下载

    现在网上不好找,折磨了我好久.这有一个方法,或许能帮到你. 下载地址:https://gitee.com/urain39/adobe-flash_player_sa 官网已经停止更新维护了,连Debu ...

  10. 比起网易有数BI,也许这款数据可视化软件更适合你!

    有数BI是网易推出的面向企业客户的可视化敏捷BI产品.拥有数据填报和自助式商业智能分析产品,提供网页端和手机端应用,帮助客户快速实现数据填报.多维分析.大数据探索.实时大数据展示和成员分享. 山海鲸可 ...