Java基础将Bean属性值放入Map中的实例
程序员文章站
2023-12-02 23:07:34
java基础将bean属性值放入map中的实例
利用发射将java对象的属性值以属性名称为键,存储到map中的简单实现。包括自身属性及从父类继承得到的属性。java类型的...
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; /** * * @classname: beantomaputils * @description: todo * @author wood * @date 2014-10-31 下午09:52:41 * */ public class beantomaputils { /** * getfileds获取所有public 属性<br/> * getdeclaredfields 获取所有声明的属性<br/> * @param bean * @return 将某个类及其继承属性全部添加到map中 */ public static map<string,object> beantomap(object bean){ map<string,object> result = new hashmap<string,object>(); 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)); } }
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
上一篇: Vue 递归多级菜单的实例代码
下一篇: Win10死机惊现“绿屏”怎么办?