java通过反射将对象A得属性值赋值给对象B
java通过反射将对象A得属性值赋值给对象B
//测试类1
public class Test1 {
private String name;
private String sex;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
//测试类2
public class Test2 {
private String name;
private String sex;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
//测试代码
import java.lang.reflect.Field;
import java.util.HashMap;
import java.util.Map;
public class AppTest {
public static void main(String[] args) throws ClassNotFoundException, IllegalArgumentException, IllegalAccessException, InstantiationException, SecurityException, NoSuchFieldException {
Test1 target = new Test1();// 目标对象
Test2 copyEd = new Test2(); //被复制的对象
copyEd.setAge(32);
copyEd.setName("你好");
target = (Test1) copyObject(target,copyEd);
System.out.println(target.getName());
System.out.println(target.getAge());
System.out.println(target.getSex());
}
/**
* 将被复制对象的属性值,复制给目标目标对象
* @param target 目标对象
* @param copyObj 被复制对象
* @return
* @throws ClassNotFoundException
* @throws IllegalArgumentException
* @throws IllegalAccessException
* @throws InstantiationException
* @throws SecurityException
* @throws NoSuchFieldException
未考虑属性类型不一致得情况。以及未考虑属性为类得情况
*/
public static <T> Object copyObject(Object target , Object copyObj) throws ClassNotFoundException, IllegalArgumentException, IllegalAccessException, InstantiationException, SecurityException, NoSuchFieldException{
// Object o = Class.forName(clzzName).newInstance();
Object o = target.getClass().newInstance();
Class tClz = target.getClass();
Class cClz = copyObj.getClass();
Map<String,Object> field_Val = new HashMap<String,Object>();
/**获取被复制对象的值,放入map,key为属性名称,value为属性值*/
for(Field f : cClz.getDeclaredFields()){
String fieldName = f.getName();
f.setAccessible(true);
field_Val.put(fieldName, f.get(copyObj));
// System.out.println(method+" "+f.get(copyObj));
}
for(Field tf : tClz.getDeclaredFields()){
String fieldName = tf.getName();
Object targetV = field_Val.get(fieldName);
if(targetV==null){
continue;
}
tf.setAccessible(true);
tf.set(o, targetV);
}
return o;
}
}
java通过反射将对象A得属性值赋值给对象B的更多相关文章
- 【java】【反射】反射实现判断发生了修改操作,判断两个对象是否发生属性值的变更,判断两个List集合内对象的属性值是否发生变更
java的反射实现: 判断发生了修改操作,判断两个对象是否发生属性值的变更,判断两个List集合内对象的属性值是否发生变更 今日份代码: package com.sxd.streamTest; imp ...
- Day14_85_通过反射机制修改Class的属性值(IO+Properties)动态修改
通过反射机制修改Class的属性值(IO+Properties)动态修改 import java.io.FileInputStream; import java.io.FileNotFoundExce ...
- 如何通过源生js获取一个元素的具体样式值 /* getCss:获取指定元素的具体样式的属性值 curElement:[dom对象] attr:[string] */
昨天的博客些的真的是惨不忍睹啊!!!但是我的人生宗旨就是将不要脸的精神进行到底,所以,今天我又来了.哈哈哈哈哈! 方法一:元素.style.属性名:(这个有局限性--只能获取行内样式的值,对于样式表或 ...
- JSON字符串反序列化成对象_部分属性值反序列化失败
简介:本人在开发webapi接口时遇到了:一个复杂的Json字符串在反序列化为对象时报,无法发序列化其中的一个属性对象? 使用方法: InternalRecommendRequestFormModel ...
- Java反射获取对象VO的属性值(通过Getter方法)
有时候,需要动态获取对象的属性值. 比如,给你一个List,要你遍历这个List的对象的属性,而这个List里的对象并不固定.比如,这次User,下次可能是Company. e.g. 这次我需要做一个 ...
- Java反射机制调用对象的方法 —— 将一个对象的属性值赋值给另一个对象的属性
模拟一个场景: 众所周知,EasyExcel导出Excel文档是依赖于注解完成的,在实体类需要导出的属性上面加上注解,导出的时候会自动识别该属性. 假如我们现在需要导出用户的信息,又不想污染原本的实体 ...
- java 通过反射获取调用类方法及属性
首先说下反射是什么?反射是Sun公司推出的一组API,此组API位于Java.lang.reflect中 反射的作用是编写工具(例如eclipse),编写框架,当然对于一般的程序,我们不可能用反射来做 ...
- 用反射的形式将一个对象属性值赋值给另一个对象,省略点get/set方法的冗余代码
1.本例使用的是idea 首先需要在idea中安装lombok插件,省略getter和setter方法的书写 在maven项目中加入lombok依赖 <dependency> <gr ...
- Java反射之Bean修改更新属性值等工具类
package com.bocean.util; import java.lang.annotation.Annotation; import java.lang.reflect.Field; imp ...
- java中两个对象间的属性值复制,比较,转为map方法实现
package com.franson.study.util; import java.lang.reflect.InvocationTargetException; import java.lang ...
随机推荐
- Python自动化结算工资和统计报表|编程一对一教学微信:Jiabcdefh
实例需求说明 你好,我是悦创. 博客首发:https://bornforthis.cn/column/pyauto/auto_base07.html 学习了 Excel 文件的写入.读取和追加内容,那 ...
- Python网络爬虫get方法出现乱码的解决的三种方案
给大家祭出网络爬虫过程中三种中文乱码的处理方案,希望对大家的学习有所帮助. 方案一 将requests.get().text改为requests.get().content 我们可以看到通过text( ...
- react 高效高质量搭建后台系统 系列 —— 登录
其他章节请看: react 高效高质量搭建后台系统 系列 登录 本篇将完成登录模块.效果和 spug 相同: 需求如下: 登录页的绘制 支持普通登录和LDAP登录 登录成功后跳转到主页,没有登录的情况 ...
- Java安全之JDBC Attacks学习记录
Java安全之JDBC Attacks 写在前面 很早就看到了Make JDBC Attacks Brilliant Again议题,一直想分析学习下,但是太懒. MySQL 原理概述 "扩 ...
- 推荐一款在浏览器编辑`Blazor`的`IDE`
不知道是否有Blazor用户羡慕过React或者Vue用户,在一些组件库中,它们就提供了在当前的组件预览对于组件的实时编辑并且预览? 比如semi-design的这种 在比如codepen这种 由于B ...
- Echarts 折线图Demo调色12种,可以直接使用~~~
测试Demo代码~~ <template> <div> <div id="myChart" ref="mapBox" style= ...
- 不止ChatGPT,谷歌云 AI 方案早已厉兵秣马!
近日 ChatGPT 爆火,掀起热议,能聊天能写代码,还能写策划稿,AI 似乎已逐渐变得无所不能. 不过在 AI 对话上,谷歌早在17年就提出了 Dialogflow 这一AI对话平台.相比起 Cha ...
- wsl2和ArchLinux的安装
版权声明:本文章参考了哔哩哔哩稿件BV1sW411v7VZ,如侵权请主动联系删除 1.Wsl2的安装 启用适用于 Linux 的 Windows 子系统 在终端运行:dism.exe /online ...
- 移动 WEB 开发布局方式 ---- flex 布局
一.flex布局体验 1.1 传统布局 flex 布局 1. 2 初体验 1. 搭建 HTML 结构 <div> <span>1</span> <span&g ...
- React Refs-知识点整理记录
一.Refs的作用 通过Refs,可以访问到 1. DOM节点. 2. render方法中创建的React元素.(class组件的实例) 二.访问节点或者实例有什么用?为什么要使用Refs来访问? 访 ...