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时,父类元素丢失的更多相关文章

  1. Java进阶(四)Java反射TypeToken解决泛型运行时类型擦除问题

    在开发时,遇到了下面这条语句,不懂,然习之. private List<MyZhuiHaoDetailModel> listLottery = new ArrayList<MyZhu ...

  2. java反射对实体类取值和赋值,可以写成通过实体类获取其他元素的数据,很方便哦~~~

    项目中需要过滤前面表单页面中传过来的实体类的中的String类型变量的前后空格过滤,由于前几天看过一个其他技术博客的的java反射讲解,非常受益.于是,哈哈哈 public static <T& ...

  3. Java 反射(二)运行时获取类的信息

    目录 一.获得类的运行时结构 1. 获得类的名字 2. 获得类的属性 获取属性列表 获取指定属性 3. 获取类的方法 获得类的方法列表 获得指定方法 4. 获得的构造器 获得构造器列表 获得指定构造器 ...

  4. java反射对实体类取值和赋值

    public static void checkDesignerEdit(Object dtos) throws Exception { Class dtosClass = dtos.getClass ...

  5. Java 遍历Map时 删除元素

    Java代码   package,,,,,,,,,,,==){ System.out.println("delete this: "+key+" = "+key ...

  6. java反射遍历实体类属性和类型,并赋值和获取值

    /* * GetModelNameAndType.java * Version 1.0.0 * Created on 2017年12月15日 * Copyright ReYo.Cn */ packag ...

  7. 基于java反射的javabean和map相互转换的工具类

    话不多说,代码如下 package com.study; import java.lang.reflect.Field; import java.util.HashMap; import java.u ...

  8. java反射之-Javabean与Map的互转

    1.BeanUntils工具类的准备 /** * @ClassName: BeanUtils * @Description: * @Author: songwp * @Date: 9:02 2022/ ...

  9. 通过Java反射做实体查询

    我们在使用hibernate的时候,查询的时候都会和实体中的一些字段相结合去查询,当然字段少了,还算是比较简单,当字段多了,就不那么容易了,所以就自己写了个方法,根据实体中的字段信息去查询,废话不多说 ...

随机推荐

  1. mysql数据库的三范式的设计与理解

    一般的数据库设计都需要满足三范式,这是最基本的要求的,最高达到6NF,但是一般情况下3NF达到了就可以 一:1NF一范式的理解: 1NF是关系型数据库中的最基本要求,就是要求记录的属性是原子性,不可分 ...

  2. AssemblyExecuteAdapter

    BizTalk custom adapter AssemblyExecuteAdapter 功能 更为方便的扩展BizTalk custom adapter 的交互方式,只需要实现IAssemblyE ...

  3. 使用新一代js模板引擎NornJ提升React.js开发体验

    当前的前端世界中有很多著名的开源javascript模板引擎如Handlebars.Nunjucks.EJS等等,相信很多人对它们都并不陌生. js模板引擎的现状 通常来讲,这些js模板引擎项目都有一 ...

  4. POJ-2031 Building a Space Station---MST + 空间距离

    题目链接: https://vjudge.net/problem/POJ-2031 题目大意: 就是给出三维坐标系上的一些球的球心坐标和其半径,搭建通路,使得他们能够相互连通.如果两个球有重叠的部分则 ...

  5. else语句的搭配

    1.else语句搭配if 要么怎样,要么怎样 2.else语句搭配for和while 干完循环之后执行else,干不完或者break就不执行 3.else与异常处理 没有问题的话就执行else吧

  6. filter过滤器与map映射

    filter过滤器 >>> list(filter(None,[0,1,2,True,False])) [1, 2, True] filter的作用就是后面的数据按照前面的表达式运算 ...

  7. axios介绍与使用说明 axios中文文档

    本周在做一个使用vuejs的前端项目,访问后端服务使用axios库,这里对照官方文档,简单记录下,也方便大家参考. Axios 是一个基于 Promise 的 HTTP 库,可以用在浏览器和 node ...

  8. Google Cardboard的九轴融合算法——基于李群的扩展卡尔曼滤波

    Google Cardboard的九轴融合算法 --基于李群的扩展卡尔曼滤波 极品巧克力 前言 九轴融合算法是指通过融合IMU中的加速度计(三轴).陀螺仪(三轴).磁场计(三轴),来获取物体姿态的方法 ...

  9. python的字符串

    首先,字符串是python内置的数据类型,其特点是用引号引起来,并且可以是使用单引号('字符串'),双引号("字符串"),三个引号('''字符串''' 和""& ...

  10. python打造一个Mysql数字类型注入脚本(1)

    前言: 总是想写一个sql注入脚本,但是之前的那些都不行. 这次做好了准备,然后嘿嘿嘿. 准备: sql注入的基础知识 熟悉怎么判断 正文: 思路概念图: 这里我没有限制用户输入,不限制的话可能会 @ ...