Java_反射_内省JavaBean
来源:互联网 发布:免费钣金放样软件 编辑:程序博客网 时间:2024/06/08 15:00
1.JavaBean概述
内省(IntroSpector)是Java 语言对 Bean 类属性、事件的一种缺省处理方法。
public class Person{private String name;public String getName() {return name;}public void setName(String name) {this.name = name;}}
例如上面一个Person类,有一个私有的成员name,存在一个get和一个set方法来对name进行获取和设定,可以通过反射更简便的获取相应字段的读和写方法
2.JavaBean内部实现过程
Java 中提供了一套 API 用来访问某个属性的 getter/setter 方法,通过这些 API 可以使你不需要了解这个规则,这些 API 存放于包 java.beans 中!
机制分析:需要对什么属性操作(name),分别对应(getName 和 setName),然后通过反射找到方法,通过普通的反射也可完成!
即: name-->Name-->getName()(或setName())-->返回Method(通过反射机制)
(getTime->time,getUDP->UDP(由于第二个字母为大写,故第一个字母保持原样))
3.JavaBean使用的两种方式
/*较复杂的*/BeanInfo beanInfo = Introspector.getBeanInfo(Person.class);//获得一个类的BeanInfoPropertyDescriptor[] pros = beanInfo.getPropertyDescriptors();//得到该类的所有属性描述信息for(PropertyDescriptor pro: pros){if(pro.getName().equals("name"))//判断某一个实现描述器的名称是否等于所需要的;{Method m = pro.getReadMethod();//得到与name对应的get方法,即getName()方法Method m1 = pro.getWriteMethod();//得到与name对应的set方法,即setName()方法System.out.println(m.invoke(p));//对获取的Method对象的实现break;}}
/*较简单的*/PropertyDescriptor pro = new PropertyDescriptor("name", p.getClass());//字段和类ClassMethod m1 = pro.getReadMethod();//得到 get方法Method m1 = pro.getWriteMethod();//得到 set方法System.out.println(m1.invoke(p));
4.BeanUtils工具
还可以使用工具BeanUtils(Download BeanUtils 和Download Commons Logging)
BeanUtils.setProperty(p, "age", "120");//类对象--对应字段(接收字符串)--接收Obj(set方法接收的参数,为Object类型)
BeanUtils.getProperty(p, "age");//类对象--对应字段(接收字符串)
- Java_反射_内省JavaBean
- 黑马程序员 java_高新技术(三)_内省 JavaBean 注解
- 反射,内省与javaBean
- 黑马程序员——java_(内省,javaBean,动态代理)
- 9.1 用内省的方式反射JavaBean
- (笔记十一)反射、JavaBean、内省、BeanUtils框架
- 【java反射之】对javabean内省操作
- Java_反射技术_简述
- 黑马程序员_Java高新技术_内省&JavaBean
- 黑马程序员_内省和JavaBean笔记
- 黑马程序员_基础加强_内省&JavaBean&Beanutils工具
- 黑马程序员_高新技术_初识JavaBean与内省
- 黑马程序员_反射、内省、注解
- 黑马程序员_反射、内省、泛型
- 黑马程序员_反射、内省、注解
- JavaBean内省
- 内省 javaBean
- JavaBean内省
- debian下修改按键映射
- 自然语言处理(NLP)网上资源整理
- 如何在云服务虚拟机上安装软件、下载文件?
- Apache对域名的泛解析方法集锦
- [传智播客][4天工作流之JBPM项目实战全套(价值1000)][F]
- Java_反射_内省JavaBean
- 可更新ResultSet的简单应用
- Windows8 扩展显示器,在第二屏不显示状态栏
- 分段和分页内存管理
- opencv中测量运行时间的函数
- Jump Game
- 在Windows Azure上部署Linux虚拟机
- 网易免费邮箱设置
- 如何让php自动进行二级域名泛解析