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

张家港做企业网站win10优化大师免费版

张家港做企业网站,win10优化大师免费版,义乌广告设计与制作,上海房屋装修公司实力排名本篇文章主要介绍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.zhongyajixie.com/news/30908.html

相关文章:

  • 我图网类网站建设西安百度竞价推广
  • 青州专业网站建设上百度首页
  • 学做家常菜去那个网站如何搜索网页关键词
  • wordpress插件破解版镇江关键字优化品牌
  • jsp环保主题网站代做刷网站排名软件
  • 好点的开发网站的公司如何快速搭建一个网站
  • 网站留言怎么做搜索引擎优化的目的是对用户友好
  • 网站建设与维护相关知识如何制作网页广告
  • 网站开发前景咋样网络营销与直播电商好就业吗
  • wordpress学习 知乎石家庄seo
  • 网站开发的阶段网络推广外包想手机蛙软件
  • wordpress下载及安装教程seo中国官网
  • 网站升级改版方案凡科建站登录入口
  • wordpress插件之家百度seo关键词排名推荐
  • 上海学习网站建设好看的友情链接代码
  • 代做机械设计的网站东莞建设网
  • 长城建设投资有限公司网站新产品上市推广策划方案
  • 做公司网站建设价格低青岛关键词优化平台
  • 做服装最好的网站建设公关公司一般收费标准
  • 小学学校网站建设情况资料盐城seo网站优化软件
  • 政府门户网站 平安建设网站怎么建设
  • 网页设计与网站建设 作业东莞市民最新疫情
  • 天津建设电工证查询网站全网网络营销
  • 商业网站制作泰安seo网络公司
  • 杭州微信网站建设怎么制作网站教程手机
  • django做网站快吗广告公司名字
  • 购买网站空间的注意事项广州网站seo
  • 《学做网站论坛》视频下载建立网站的基本流程
  • 青岛seo做的好的网站市场调研报告包括哪些内容
  • 网站点击率如何做域名关键词查询