1. javabean 规范
- javabean 是一种 java 语言写成的可重用性组件(类)
1.1. 必须遵循的规范:
- 类必须使用
public修饰 - 必须保证有公共无参构造器
- 包含了属性的操作手段(给属性赋值, 获取属性值)
1.2. 分类
- 复杂: UI, 比如
Button, Panel, Window类 - 简单:
domain, dao, service组件, 封装数据, 操作数据库, 逻辑运算等.
1.3. 成员
- 方法: Method
- 事件: event
- 属性: property
1.4. 备注
attribute: 表示状态, java 中没有这个概念,
有人会将字段 field 称为属性 attribute, 不推荐这样叫.property: 表示状态, 但不是字段, 是属性的操作方法,
即 getter/setter, 框架中使用的大多是属性.getter方法:
仅仅用于获取某一个字段存储的值.setter方法:
仅仅用于给某一个字段设置需要存储的值.is方法:
如果操作的字段是 boolean 类型的, 此时将方法名改为类似 isName 的样子.
1.5. 内省机制
- 作用: 用于查看和操作 javabean 中的属性.
- 获取 JavaBean 中的每一个属性名/属性类型.
- 通过 getter 方法获取属性值;
- 通过 setter 方法给属性设置值;
1.6. JavaBean 和 Map 之间的相互转换
JavaBean 拥有多组属性名和属性值, 每一个属性名称对应一个属性值, 属性名称是不同的.
Map 拥有多组 key-value, 每一个 key 对应一个 value, key 是不同的.
如果把JavaBean中的属性名称看做是Map中的key,二者就是等价的.
1.6.1. 把JavaBean转换为Map对象
//把JavaBean对象转换为Map
public static Map<String, Object> bean2map (Object bean) throws Exception{
Map<String,Object> map = new HashMap<>();
BeanInfo beanInfo = Introspector.getBeanInfo(bean.getClass(), Object.class);
PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors();
for (PropertyDescriptor pd : pds) {
String name = pd.getName();//属性名称
Object value = pd.getReadMethod().invoke(bean);//调用属性的getter方法, 获取属性值
map.put(name, value);
}
return map;
}
1.6.2. 把Map对象转换为JavaBean
//把Map特換JavaBean
public static <T> T map2bean (Map<String, Object> map, Сlass<T> beanType) throws Exception {
//创建JavaBean对象
Object obj = beanType.newInstance();
BeanInfo beanInfo = Introspector.getBeanInfo(beanType, Object.class);
PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors();
for (PropertyDescriptor pd : pds) {
//从Map中获取和属性同名的key的值
Object value = map.get(pd.getName()) ;
//调用setter方法,设置属性值
pd.getWriteMethod().invoke(obj, value) ;
}
return (T) obj;
}
本文介绍了JavaBean的规范,包括类的声明、属性和方法,以及内省机制的作用。同时,详细阐述了如何将JavaBean转换为Map对象以及将Map对象转换回JavaBean的过程,提供了相关代码示例。

826

被折叠的 条评论
为什么被折叠?



