Java 反射实现实体转Map时,父类元素丢失
public class BeanToMap {
public static Map<String, Object> ConvertObjToMap(Object obj) {
Map<String, Object> reMap = new HashMap<>();
if (obj == null)
return null;
List<Field> fields = new ArrayList<>();
List<Field> childFields;
List<String> fieldsName = new ArrayList<>();
Class tempClass = obj.getClass();
while (tempClass != null) {//当父类为null的时候说明到达了最上层的父类(Object类).
fields.addAll(Arrays.asList(tempClass.getDeclaredFields()));
tempClass = tempClass.getSuperclass(); //得到父类,然后赋给自己
}
childFields = Arrays.asList(obj.getClass().getDeclaredFields());
for (Field field : childFields) {
fieldsName.add(field.getName());
}
try {
for (Field field : fields) {
try {
if (fieldsName.contains(field.getName())) {
Field f = obj.getClass().getDeclaredField(
field.getName());
f.setAccessible(true);
Object o = f.get(obj);
reMap.put(field.getName(), o);
} else {
Field f = obj.getClass().getSuperclass().getDeclaredField(
field.getName());
f.setAccessible(true);
Object o = f.get(obj);
reMap.put(field.getName(), o);
}
} catch (Exception e) {
e.printStackTrace();
}
}
} catch (SecurityException e) {
e.printStackTrace();
}
return reMap;
}
}
上述代码实现了实体转map,不过当实体是子类的时候,会出现异常,需要考虑到的问题是父类。
通过这种方式保证获取到父类的信息
obj.getClass().getSuperclass()
Java 反射实现实体转Map时,父类元素丢失的更多相关文章
- Java进阶(四)Java反射TypeToken解决泛型运行时类型擦除问题
在开发时,遇到了下面这条语句,不懂,然习之. private List<MyZhuiHaoDetailModel> listLottery = new ArrayList<MyZhu ...
- java反射对实体类取值和赋值,可以写成通过实体类获取其他元素的数据,很方便哦~~~
项目中需要过滤前面表单页面中传过来的实体类的中的String类型变量的前后空格过滤,由于前几天看过一个其他技术博客的的java反射讲解,非常受益.于是,哈哈哈 public static <T& ...
- Java 反射(二)运行时获取类的信息
目录 一.获得类的运行时结构 1. 获得类的名字 2. 获得类的属性 获取属性列表 获取指定属性 3. 获取类的方法 获得类的方法列表 获得指定方法 4. 获得的构造器 获得构造器列表 获得指定构造器 ...
- java反射对实体类取值和赋值
public static void checkDesignerEdit(Object dtos) throws Exception { Class dtosClass = dtos.getClass ...
- Java 遍历Map时 删除元素
Java代码 package,,,,,,,,,,,==){ System.out.println("delete this: "+key+" = "+key ...
- java反射遍历实体类属性和类型,并赋值和获取值
/* * GetModelNameAndType.java * Version 1.0.0 * Created on 2017年12月15日 * Copyright ReYo.Cn */ packag ...
- 基于java反射的javabean和map相互转换的工具类
话不多说,代码如下 package com.study; import java.lang.reflect.Field; import java.util.HashMap; import java.u ...
- java反射之-Javabean与Map的互转
1.BeanUntils工具类的准备 /** * @ClassName: BeanUtils * @Description: * @Author: songwp * @Date: 9:02 2022/ ...
- 通过Java反射做实体查询
我们在使用hibernate的时候,查询的时候都会和实体中的一些字段相结合去查询,当然字段少了,还算是比较简单,当字段多了,就不那么容易了,所以就自己写了个方法,根据实体中的字段信息去查询,废话不多说 ...
随机推荐
- auto_prepend_file与auto_append_file使用方法
auto_prepend_file与auto_append_file使用方法 如果需要将文件require到所有页面的顶部与底部. 第一种方法:在所有页面的顶部与底部都加入require语句. 例如: ...
- List集合就这么简单【源码剖析】
前言 声明,本文用得是jdk1.8 前一篇已经讲了Collection的总览:Collection总览,介绍了一些基础知识. 现在这篇主要讲List集合的三个子类: ArrayList 底层数据结构是 ...
- cannot import name 'ChineseAnalyzer'
在python3.6下安装jieba3k的时候报错: from jieba.analyse import ChineseAnalyzer ImportError: cannot import name ...
- kafka--- consumer 消费消息
1. consumer API kafka 提供了两套 consumer API: 1. The high-level Consumer API 2. The SimpleConsumer API 其 ...
- [Luogu1342] 请柬 - 最短路模板
Description 在电视时代,没有多少人观看戏剧表演.Malidinesia古董喜剧演员意识到这一事实,他们想宣传剧院,尤其是古色古香的喜剧片.他们已经打印请帖和所有必要的信息和计划.许多学生被 ...
- Codeforces Round #426 (Div. 2)
http://codeforces.com/contest/834 A. The Useless Toy 题意: <,>,^,v这4个箭头符号,每一个都可以通过其他及其本身逆时针或者顺时针 ...
- tornado框架源码分析---Application类之debug参数
先贴上Application这个类的源码. class Application(httputil.HTTPServerConnectionDelegate): """A ...
- SpringBoot(五):@ConfigurationProperties配置参数绑定
在springmvc或其他ssh框架中如果我们要实现一个配置参数的加载,需要使用代码实现读取properties文件等操作,或者需要使用其他属性@value(name="username&q ...
- SpringMVC(九):SpringMVC 处理输出模型数据之ModelAndView
Spring MVC提供了以下几种途径输出模型数据: 1)ModelAndView:处理方法返回值类型为ModelAndView时,方法体即可通过该对象添加模型数据: 2)Map及Model:处理方法 ...
- 从零开始系列之vue全家桶(3)安装使用vuex
什么是vuex? vuex:Vue提供的状态管理工具,用于同一管理我们项目中各种数据的交互和重用,存储我们需要用到数据对象. 即data中属性同时有一个或几个组件同时使用,就是data中共用的属性. ...