当前位置: 首页 > news >正文

苏州建设交通高等职业技术学校网站建设局电工证与安监局电工证

苏州建设交通高等职业技术学校网站,建设局电工证与安监局电工证,百度推广怎么做网站的优化,互联网公司排名对比本篇文章主要介绍Java如何给已有实体类动态的添加字段并返回新的实体对象且不影响原来的实体对象结构。 参考代码如下&#xff1a; 引入依赖包 <dependency><groupId>cglib</groupId><artifactId>cglib</artifactId><version>2.2.2</…

本篇文章主要介绍Java如何给已有实体类动态的添加字段并返回新的实体对象且不影响原来的实体对象结构。

参考代码如下:

引入依赖包

   <dependency><groupId>cglib</groupId><artifactId>cglib</artifactId><version>2.2.2</version></dependency><dependency><groupId>commons-beanutils</groupId><artifactId>commons-beanutils</artifactId><version>1.9.4</version></dependency>

代码实现

DynamicBean.java

import net.sf.cglib.beans.BeanGenerator;
import net.sf.cglib.beans.BeanMap;import java.util.Map;public class DynamicBean {private Object target;private BeanMap beanMap;public DynamicBean(Class superclass, Map<String, Class> propertyMap) {this.target = generateBean(superclass, propertyMap);this.beanMap = BeanMap.create(this.target);}public void setValue(String property, Object value) {beanMap.put(property, value);}public Object getValue(String property) {return beanMap.get(property);}public Object getTarget() {return this.target;}/*** 根据属性生成对象*/private Object generateBean(Class superclass, Map<String, Class> propertyMap) {BeanGenerator generator = new BeanGenerator();if (null != superclass) {generator.setSuperclass(superclass);}BeanGenerator.addProperties(generator, propertyMap);return generator.create();}
}

ReflectUtil.java

import com.google.common.collect.Maps;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.beanutils.PropertyUtilsBean;import java.beans.PropertyDescriptor;
import java.util.Date;
import java.util.Map;@Slf4j
public class ReflectUtil {public static Object getTarget(Object dest, Map<String, Object> addProperties) {PropertyUtilsBean propertyUtilsBean = new PropertyUtilsBean();PropertyDescriptor[] descriptors = propertyUtilsBean.getPropertyDescriptors(dest);Map<String, Class> propertyMap = Maps.newHashMap();for (PropertyDescriptor d : descriptors) {if (!"class".equalsIgnoreCase(d.getName())) {propertyMap.put(d.getName(), d.getPropertyType());}}addProperties.forEach((k, v) -> {String sclass = v.getClass().toString();if (sclass.equals("class java.util.Date")) {//对日期进行处理propertyMap.put(k, Long.class);} else {propertyMap.put(k, v.getClass());}});DynamicBean dynamicBean = new DynamicBean(dest.getClass(), propertyMap);propertyMap.forEach((k, v) -> {try {if (!addProperties.containsKey(k)) {dynamicBean.setValue(k, propertyUtilsBean.getNestedProperty(dest, k));}} catch (Exception e) {log.error("动态添加字段出错", e);}});addProperties.forEach((k, v) -> {try {String sclass = v.getClass().toString();if (sclass.equals("class java.util.Date")) {//动态添加的字段为date类型需要进行处理Date date = (Date) v;dynamicBean.setValue(k, date.getTime());} else {dynamicBean.setValue(k, v);}} catch (Exception e) {log.error("动态添加字段值出错", e);}});Object obj = dynamicBean.getTarget();return obj;}
}

使用示例

创建Student实体类:

@Setter
@Getter
@ToString
@NoArgsConstructor
@AllArgsConstructor
public class Student implements Serializable {private String name;
}

测试

@Slf4j
public class MyTest {public static void main(String[] args) {Student student = new Student();student.setName("公众号:小小开发者");log.info("student = {}",JSON.toJSONString(student));Map<String, Object> propertiesMap = new HashMap<>();propertiesMap.put("age", 25);Object obj = ReflectUtil.getTarget(student, propertiesMap);log.info("动态添加属性: = {}",JSON.toJSONString(obj));}
}

测试结果

student = {“name”:“公众号:小小开发者”}

动态添加属性: = {“age”:25,“name”:“公众号:小小开发者”}

可以看到,我们动态为对象添加的属性和属性值已经成功实现!

http://www.yayakq.cn/news/523801/

相关文章:

  • 门票预订网站建设建设网站企业网上银行登录官方
  • 个人网站引导页源码如何设计一款软件
  • 怎么做王者荣耀网站建设网站贵吗
  • 站长查询域名做网站编程的电脑配置
  • 天津如何做百度的网站推广破解要钱网站
  • 建站推广网站排名建设我们的网站教案
  • 网站应包括的基本功能和高级功能天宁网站建设制作
  • phton可以做网站吗玄武区网站建设
  • 学生网站建设实训报告上海静安网站制作
  • 网站联盟是什么网站建设讠金手指科杰
  • 属于门户网站的平台有做汽车网可参考网站
  • 个人简约网站模板广东深广东深圳网站建设服务
  • 个人做网站还是公众号赚钱好深圳网络营销
  • PHP网站开发都需要学什么网站建设交流
  • 企业网站留言鄂北局网站建设者风采
  • 云南培训网站建设潍坊网站制作报价
  • 同一个服务器做两个网站有哪些专门制作网页的软件
  • 植物网站设计方案H5酒店静态网站建设开题报告范文
  • 网站关键词优化排名怎么做环境设计专业作品集
  • 做机械设备销售的那个网站好个人网站需要多大的网速
  • 网站从哪些方面来做网页设计专业培训
  • 东莞三网合一网站制作重庆制作企业网站
  • 网站编辑怎么做网站开发架构mvc
  • 音乐网站界面wordpress如何给指定位置添加代码
  • 织梦网站建设流程网站设计怎么用黑色
  • 商业设计要点宁波seo营销推广
  • 网络工程师 网站建设做境外盈利网站违法吗
  • 做网站会什么问题网站设计哪里公司好
  • 软件项目和网站建设的区别北京市工程信息网官网
  • shopify建站教程佛山seo管理