Java_反射_内省JavaBean
2013-05-17 14:36
483 查看
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);//获得一个类的BeanInfo PropertyDescriptor[] 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());//字段和类Class Method 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内省机制
- JavaEE JavaBean 反射、内省、BeanUtils
- 内省——>javaBean
- Java反射与内省
- Introspector内省和反射的区别. 什么是Bean,对应的jdk概念有哪些,
- Spring Framework 5.0:使用注解的方式来加载Bean、入门注解、了解java反射
- 利用Java的反射机制实现Bean实体与Map自动转换的工具类
- 使用反射创建Bean、Spring中是如何根据类名配置创建Bean实例、Java提供了Class类获取类别的字段和方法,包括构造方法
- 利用Java针对MySql封装的jdbc框架类 JdbcUtils 完整实现(包含增删改查、JavaBean反射原理,附源码)
- 【类反射】(模拟Java内省的功能)
- java内省机制与反射实现工厂模式
- 【Java笔记】Java——远程监控、反射、代理、内省机制
- java反射bean to bean
- 【spring学习前奏】JavaBean内省Introspector以及BeanInfo
- 黑马程序员_java高新技术之javaBean与内省
- JAVA的内省(introspector)与反射(reflection)
- 【java反射之】对javabean内省操作
- 黑马程序员_java基础加强_静态导入_反射_枚举_注解_内省_泛型_代理
- Java-javabean内省
- Introspector内省和反射的区别. 什么是Bean,对应的jdk概念有哪些,