栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java基础将Bean属性值放入Map中的实例

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java基础将Bean属性值放入Map中的实例

Java基础将Bean属性值放入Map中的实例

利用发射将Java对象的属性值以属性名称为键,存储到Map中的简单实现。包括自身属性及从父类继承得到的属性。Java类型的getField[s]方法只能获取public 类型的属性,getDeclaredFields则能获取所有声明的属性,同时,如果类的可见性非公有,则Field的get(Object)方法将取不到具体的属性值。

package com.wood.util; 
 
import java.lang.reflect.Field; 
import java.util.HashMap; 
import java.util.Map; 
 
 
public class BeanToMapUtils { 
   
  public static Map beanToMap(Object bean){ 
    Map result = new HashMap(); 
    if(bean==null){ 
      return result; 
    } 
     
    Field[] fields = bean.getClass().getDeclaredFields(); 
    if(fields==null||fields.length==0){ 
      return result; 
    } 
     
    for(Field field:fields){ 
      //重置属性可见(而且一般属性都是私有的),否则操作无效 
      boolean accessible = field.isAccessible(); 
      if(!accessible){ 
 field.setAccessible(true); 
      } 

      //获取属性名称及值存入Map 
      String key = field.getName(); 
      try { 
 result.put(key, field.get(bean)); 
      } catch (IllegalArgumentException e) { 
 e.printStackTrace(); 
      } catch (IllegalAccessException e) { 
 e.printStackTrace(); 
      } 

      //还原属性标识 
      field.setAccessible(accessible); 
    } 
     
    //获取父类属性 
    fields = bean.getClass().getSuperclass().getDeclaredFields(); 
    if(fields==null||fields.length==0){ 
      return result; 
    } 
     
    for(Field field:fields){ 
      //重置属性可见(而且一般属性都是私有的),否则操作无效 
      boolean accessible = field.isAccessible(); 
      if(!accessible){ 
 field.setAccessible(true); 
      } 

      //获取属性名称及值存入Map 
      String key = field.getName(); 
      try { 
 result.put(key, field.get(bean)); 
      } catch (IllegalArgumentException e) { 
 e.printStackTrace(); 
      } catch (IllegalAccessException e) { 
 e.printStackTrace(); 
      } 

      //还原属性标识 
      field.setAccessible(accessible); 
    } 
     
    return result; 
  } 
   
  public static void main(String[] args) { 
    Dog info = new Dog(); 
    info.setCountry("cc"); 
    info.setName("Dog"); 
     
    info.setCategory("gram"); 
    info.setOwner("wang"); 
     
    System.out.println(beanToMap(info)); 
  } 
} 

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/145414.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号