Java反射中java.beans包的用法
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍"Java反射中java.beans包的用法",在日常操作中,相信很多人在Java反射中java.beans包的用法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对
千家信息网最后更新 2026年11月01日Java反射中java.beans包的用法
这篇文章主要介绍"Java反射中java.beans包的用法",在日常操作中,相信很多人在Java反射中java.beans包的用法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Java反射中java.beans包的用法"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
看一个例子:
NodeDO.java:一个标准的javabean对象
public class NodeDO { private String name; private String email; private Date date; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public Date getDate() { return date; } public void setDate(Date date) { this.date = date; } @Override public String toString() { return "NodeDO [name=" + name + ", email=" + email + ", date=" + DodeDOEditor.sdf.format(date) + "]"; }}TestDO.java一样,里面引用了NodeDO:
public class TestDO { private String nodeName; private NodeDO nodeDO; public String getNodeName() { return nodeName; } public void setNodeName(String nodeName) { this.nodeName = nodeName; } public NodeDO getNodeDO() { return nodeDO; } public void setNodeDO(NodeDO nodeDO) { this.nodeDO = nodeDO; } }我们想实现类似这样的功能:
public static void main(String[] args) throws Exception{ Map parameters = new HashMap(){ { put("nodeName", "小胖测试"); put("nodeDO", "xiaopang|xiaopang@163.com|2015-10-20 12:00:00"); } }; TestDO testDo = convert(parameters); System.out.println(testDo.getNodeName()); System.out.println(testDo.getNodeDO()); } 把parameters这个map转化成TestDO的对象,该如何来做呢?
(1)首先要定义一个用来转化Property的PropertyEditor:
public class DodeDOEditor extends PropertyEditorSupport{ public static final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); @Override public void setAsText(String text) throws IllegalArgumentException{ String[] tokens = text.split("\\|"); NodeDO nodeDo = new NodeDO(); nodeDo.setName(tokens[0]); nodeDo.setEmail(tokens[1]); try{ nodeDo.setDate(sdf.parse(tokens[2])); }catch(ParseException e){ throw new IllegalArgumentException(e); } setValue(nodeDo); } }(2)做转化:
public class PropertyEditorSample { static{ PropertyEditorManager.registerEditor(NodeDO.class, DodeDOEditor.class); } public static void main(String[] args) throws Exception{ Map parameters = new HashMap(){ { put("nodeName", "小胖测试"); put("nodeDO", "xiaopang|xiaopang@163.com|2015-10-20 12:00:00"); } }; TestDO testDo = convert(parameters); System.out.println(testDo.getNodeName()); System.out.println(testDo.getNodeDO()); } private static TestDO convert(Map parameters)throws Exception { TestDO testDO = new TestDO(); BeanInfo bi = Introspector.getBeanInfo(TestDO.class); PropertyDescriptor[] pds = bi.getPropertyDescriptors(); for(PropertyDescriptor pd : pds){ Class> propertyType = pd.getPropertyType(); Method writeMethod = pd.getWriteMethod(); if(propertyType == Class.class){ //ignore }else if(propertyType == String.class){ writeMethod.invoke(testDO, parameters.get(pd.getName())); }else{ PropertyEditor editor = PropertyEditorManager.findEditor(propertyType); if(editor != null){ editor.setAsText(parameters.get(pd.getName())); writeMethod.invoke(testDO, editor.getValue()); }else{ System.out.println("no editor for:"+pd.getName()); } } } return testDO; } } 其实关键点就两句话
editor.setAsText(parameters.get(pd.getName()));//1 editor.getValue();//2 //因此,一般都会在setAsText中去调用setValue()来保存转化以后的值,这样通过getValue()就能获取到了到此,关于"Java反射中java.beans包的用法"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
反射
学习
对象
更多
小胖
帮助
测试
实用
接下来
例子
关键
关键点
功能
文章
方法
标准
理论
知识
篇文章
网站
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
互联网科技产业
深圳恒合互联网络科技有限公司
科技企业和互联网企业
麻工互联网科技
互联网科技金融公司
杭州互联网科技公司
互联网科技上市公司
上游互联网科技
科技大学互联网专业好不好
银川新华互联网科技职业技术培训学校图片
互联网金融科技公司干啥的
科技互联网大厂
互联网科技研发水平
深圳互联网科技的发展
中国互联网有什么科技
深圳无忧互联网科技
广州千川互联网科技有限公司
下一代互联网重大应用科技园
东营紫格互联网科技
科技互联网公司两年变化
互联网金融科技
科技互联网项目
腾讯阿里互联网科技
深圳科技互联网
科技互联网的估值
栖莱科技互联网股份有限公司
昭通互联网科技选哪家
杭州壁岐互联网科技有限公司
无锡工业互联网科技有限公司
北京市互联网新科技