/**
* 浅拷贝的工具类
*/
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. 《HALCON数字图像处理》第三章笔记

    目录 第三章 HALCON图像处理基础 HALCON控制语句 HALCON算子 HALCON图像处理入门 HALCON图像读取 HALCON图像显示 图形窗口 图像显示 显示文字 HALCON图像转换 ...

  2. 跨域问题和使用 cookie 的限制

    前言 在我的文章 使用 cookie 的身份验证和授权 的最后,讲到了跨域问题,这篇文章就简单介绍跨域的相关知识,并说明在 net core 中怎么设置跨域. 使用的版本为 net6,并使用 Mini ...

  3. model.apply(fn)或net.apply(fn)

    详情可参考:https://pytorch.org/docs/1.11/generated/torch.nn.Module.html?highlight=torch%20nn%20module%20a ...

  4. 第6章 字符串(下)——C++字符串

    6.5 C++ strings(C++字符串) C风格字符串常见错误:试图去访问数组范围以外的元素:没有使用函数strcpy( )来实现字符串之间的复制:没有使用函数strcmp( )来比较两个字符串 ...

  5. LVGL库入门教程04-样式

    LVGL样式 LVGL样式概述 创建样式 在 LVGL 中,样式都是以对象的方式存在,一个对象可以描述一种样式.每个控件都可以独立添加样式,创建的样式之间互不影响. 可以使用 lv_style_t 类 ...

  6. 重学ES系列之过滤数组

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. Win 系统下使用gnvm操作node版本

    下载 gnvm官方网址 有好几种安装方式,我这里使用的是百度网盘下载. 安装 下载完成将gnvm.exe文件放到node的安装根目录下,如果你不知道安装目录在哪?可以使用命令: where node ...

  8. iostat、vmstat、iftop命令详解

    1.安装iostat命令 yum install sysstat -y 用法:iostat [ 选项 ] [ <时间间隔> [ <次数> ]] 常用选项说明: -c:只显示系统 ...

  9. SDK导入问题 __imp_与__imp__

    目前刚刚实习一周,接触的第一个项目是CMake编译的QT项目,需要引入公司的SDK,编译能过去但是程序就是找不到SDK的接口, 排查了半天发现问题在于:公司的SDK是32位的,自己项目的build k ...

  10. Linux 无法启动vmmon的问题[主要出现于Arch系]

    Vmmon module not loaded 使用如下命令加载模块 # modprobe -a vmw_vmci vmmon 可能会出现modprobe: WARNING: Module vmmon ...