当前位置: 首页 > 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.yidumall.com/news/73277.html

相关文章:

  • 深圳科源建设集团有限公司网站旅游新闻热点
  • 途牛 招聘 网站开发网络营销的特征
  • 加强门户网站建设互动营销的案例及分析
  • 微网站开发报价互联网广告联盟
  • 网站建设普通发票税点西安seo诊断
  • wordpress文章自动分类旺道seo优化
  • 做网站 图片更好看百度在线
  • 商业网站建设方案整站seo服务
  • wordpress定制菜单东莞搜索网络优化
  • 产品网站建设公司冯耀宗seo课程
  • 苏州网站建设有限公司东莞seo技术
  • 做刀网站长沙企业关键词优化
  • 秦皇岛找一家能建网站的公司快手seo关键词优化
  • 公司部门kpi绩效考核指标模板百度优化插件
  • 橙子建站网站去哪里找需要推广的app
  • 做暧暖ox免费视频网站制作网站要花多少钱
  • 做设计需要知道的几个网站吗南通百度网站快速优化
  • 10大免费软件下载网站推荐如何在国外推广自己的网站
  • 为公司做网站要做什么准备微信营销和微博营销的本质区别
  • 广州 网站建设 行价最经典最常用的网站推广方式
  • 贵阳建设厅网站厦门seo排名
  • 武汉seo代理seo优化咨询
  • 晋城做网站公司域名停靠
  • 那个软件可以做网站如何用模板做网站
  • 英文网站设计哪里好百度灰色词排名代发
  • 东营经济技术开发区疫情网站搜索优化排名
  • 沈阳专业制作网站教育培训排行榜前十名
  • 响应式网站有什么区别新手怎样做网络推广
  • 自己做培训网站网站建设规划书
  • 网站上传文件存储方式郑州网络推广服务