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
相关文章:
如何在阿里云完成域名注册与建站?
网站制作公司排行榜,抖音怎样做个人官方网站
制作网站的网址是什么,请问后缀为.com和.com.cn还有.cn的这三种网站是分别是什么类型的网站?
如何用狗爹虚拟主机快速搭建网站?
小型网站制作HTML,*游戏网站怎么搭建?
已有域名和空间如何搭建网站?
建站主机服务器选购指南:轻量应用与VPS配置解析
如何彻底卸载建站之星软件?
定制建站流程解析:需求评估与SEO优化功能开发指南
北京的网站制作公司有哪些,哪个视频网站最好?
建站之星在线版空间:自助建站+智能模板一键生成方案
如何快速搭建虚拟主机网站?新手必看指南
如何基于云服务器快速搭建网站及云盘系统?
c++怎么用jemalloc c++替换默认内存分配器【性能】
c# 在高并发场景下,委托和接口调用的性能对比
建站与域名管理如何高效结合?
小米网站链接制作教程,请问miui新增网页链接调用服务有什么用啊?
如何在阿里云购买域名并搭建网站?
代购小票制作网站有哪些,购物小票的简要说明?
阿里云高弹*务器配置方案|支持分布式架构与多节点部署
Bpmn 2.0的XML文件怎么画流程图
如何用已有域名快速搭建网站?
建站之星各版本价格是多少?
网站制作公司,橙子建站是合法的吗?
高防服务器如何保障网站安全无虞?
如何通过WDCP绑定主域名及创建子域名站点?
建站之星如何取消后台验证码生成?
建站主机如何选?性能与价格怎样平衡?
北京网站制作网页,网站升级改版需要多久?
开源网站制作软件,开源网站什么意思?
专业网站设计制作公司,如何制作一个企业网站,建设网站的基本步骤有哪些?
网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?
制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?
实现虚拟支付需哪些建站技术支撑?
网站制作大概要多少钱一个,做一个平台网站大概多少钱?
如何设置并定期更换建站之星安全管理员密码?
香港服务器建站指南:免备案优势与SEO优化技巧全解析
定制建站如何定义?其核心优势是什么?
建站之星安装提示数据库无法连接如何解决?
建站主机如何选?高性价比方案全解析
非常酷的网站设计制作软件,酷培ai教育官方网站?
建站之星上传入口如何快速找到?
nginx修改上传文件大小限制的方法
C++时间戳转换成日期时间的步骤和示例代码
如何通过山东自助建站平台快速注册域名?
移民网站制作流程,怎么看加拿大移民官网?
如何有效防御Web建站篡改攻击?
免费的流程图制作网站有哪些,2025年教师初级职称申报网上流程?
常州自助建站费用包含哪些项目?
建站之星CMS建站配置指南:模板选择与SEO优化技巧
*请认真填写需求信息,我们会在24小时内与您取得联系。