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));
}
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
# Java将Bean属性值放入Map
# java
# bean
# 放入map
# Java cglib为实体类(javabean)动态添加属性方式
# java 基础之JavaBean属性命名规范问题
# JSP JavaBean的setProperty属性
# Java循环对bean的属性进行赋值的实现
# 都是
# 希望能
# 谢谢大家
# 则能
# 下午
# 见性
# 非公有
# 类属
# date
# author
# Description
# BeanToMapUtils
# TODO
# ClassName
# HashMap
# getFileds
# br
# lt
# reflect
# getDeclaredFields
相关文章:
建站之星多图banner生成与模板自定义指南
广州商城建站系统开发成本与周期如何控制?
在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?
建站之星如何开启自定义404页面避免用户流失?
高防服务器:AI智能防御DDoS攻击与数据安全保障
深圳 网站制作,深圳招聘网站哪个比较好一点啊?
建站之星logo尺寸如何设置最合适?
建站之星代理平台如何选择最佳方案?
如何在IIS服务器上快速部署高效网站?
如何选择香港主机高效搭建外贸独立站?
详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)
建站为何优先选择香港服务器?
如何通过.red域名打造高辨识度品牌网站?
电影网站制作价格表,那些提供免费电影的网站,他们是怎么盈利的?
购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?
建站之星价格显示格式升级,你的预算足够吗?
大学网站设计制作软件有哪些,如何将网站制作成自己app?
长沙做网站要多少钱,长沙国安网络怎么样?
如何做静态网页,sublimetext3.0制作静态网页?
如何用IIS7快速搭建并优化网站站点?
一键网站制作软件,义乌购一件代发流程?
巅云智能建站系统:可视化拖拽+多端适配+免费模板一键生成
建站之星下载版如何获取与安装?
如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?
Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解
PHP正则匹配日期和时间(时间戳转换)的实例代码
再谈Python中的字符串与字符编码(推荐)
如何登录建站主机?访问步骤全解析
智能起名网站制作软件有哪些,制作logo的软件?
大同网页,大同瑞慈医院官网?
微信小程序 五星评分(包括半颗星评分)实例代码
Thinkphp 中 distinct 的用法解析
如何设计高效校园网站?
如何用搬瓦工VPS快速搭建个人网站?
rsync同步时出现rsync: failed to set times on “xxxx”: Operation not permitted
建站之星2.7模板快速切换与批量管理功能操作指南
制作网站的过程怎么写,用凡科建站如何制作自己的网站?
专业网站制作企业网站,如何制作一个企业网站,建设网站的基本步骤有哪些?
如何快速生成高效建站系统源代码?
如何通过多用户协作模板快速搭建高效企业网站?
音乐网站服务器如何优化API响应速度?
学校为何禁止电信移动建设网站?
建站之星代理如何优化在线客服效率?
免费制作小说封面的网站有哪些,怎么接网站批量的封面单?
西安制作网站公司有哪些,西安货运司机用的最多的app或者网站是什么?
如何在自有机房高效搭建专业网站?
大连网站设计制作招聘信息,大连投诉网站有哪些?
网站插件制作软件免费下载,网页视频怎么下到本地插件?
定制建站价位费用解析与套餐推荐全攻略
香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化
*请认真填写需求信息,我们会在24小时内与您取得联系。