内省——Introspector类
来源:互联网 发布:js timestamp 格式化 编辑:程序博客网 时间:2024/06/05 20:04
内省(Introspector类)
内省的目标是得到JavaBean属性的读、写方法的反射对象,通过反射对JavaBean属性进行操作的一组API。
如下,有一个JavaBean
public class User {private String username;private String password;public User(String username, String password) {this.username = username;this.password = password;}public User() {}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String toString() {return "User [username=" + username + ", password=" + password + "]";} }
1.内省之获取BeanInfo
BeanInfo beanInfo = Introspector.getBeanInfo(User.class);
2.得到所有属性描述符(PropertyDescriptor)
通过BeanInfo可以得到这个类的所有JavaBean属性的PropertyDescriptor对象。然后就可以通过PropertyDescriptor对象得到这个属性的getter/setter方法的Method对象了。
PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors();
注:每个PropertyDescriptor对象对应一个JavaBean属性:
1) String getName():获取JavaBean属性名称;
2) Method getReadMethod:获取属性的读方法;
3) Method getWriteMethod:获取属性的写方法。
3.实例:完成Map数据封装到User对象中
public void fun1() throws Exception {
Map<String,String> map = new HashMap<String,String>();
map.put("username", "admin");
map.put("password", "admin123");
//获取BeanInfo
BeanInfo beanInfo = Introspector.getBeanInfo(User.class);
//得到所有属性描述符
PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors();
//得到Javabean对象
User user = new User();
for(PropertyDescriptor pd : pds) {
String name = pd.getName();
String value = map.get(name);
if(value != null) {
Method writeMethod = pd.getWriteMethod();
//
invoke(Object obj, Object... args)
对带有指定参数的指定对象调用由此Method
对象表示的底层方法。writeMethod.invoke(user, value);
}
}
System.out.println(user);
}
4.内省示意图
- 内省——Introspector类
- 内省(Introspector) — JavaBean
- 黑马程序员—Introspector内省
- 黑马程序员——内省(IntroSpector)
- 基础加强—04—内省(IntroSpector)
- 深入理解J2SE—Introspector(内省)
- 深入理解J2SE—Introspector(内省)应用
- 内省(Introspector)
- 内省(Introspector)
- 内省(Introspector)
- IntroSpector内省
- 内省(Introspector)
- 谷哥的小弟学后台(32)——内省Introspector
- 内省(introSpector)
- 内省(INTROSPECTOR)
- Java 内省技术(Introspector)
- JAVA内省 Introspector
- java (内省)Introspector
- 国寿养老暑期实习二面
- FATFS最新R0.13官方源码下载
- 51nod 1046 A^B Mod C【快速幂模板】
- 3. adb常用命令
- boostrap 轮播 carousel(旋转木马)
- 内省——Introspector类
- 自定义pickerview实现倒计时
- 使用eclipse插件eclemma查看UT覆盖率
- 【网络】CRC校验
- 固定路径寻路
- 4. mtklog分析
- fineReport帮助文档
- 前端如何 及时获得服务器更新通知?
- LearnOpenCV学习——平均脸faceAverage.py