一、javaBean类的规范:
1. 必须要有一个默认构造器(无参构造器)
2. 提供get/set方法,如果只有get方法,那么这个属性是只读属性!
3. 方法名称满足一定的规范,那么它就是属性!boolean类型的属性,它的读方法可以是is开头,也可以是get开头!
4. 属性:有get/set方法的成员,还可以没有成员,只有get/set方法。即:
真正决定是否存在属性(与成员变量不同)的是是否存在get/set方法,
而不是是否存在成员变量。
二、BeanUtils的使用:
准备工作:导入俩个包commons-beanutils.jar、commons-logging.jar
根据反射获取实例对象:
Class<Bean> clazz = Bean.class;
Object bean = clazz.newInstance();
BeanUtils所拥有方法:
BeanUtils.getProperty(Object bean, String propertyName):根据get方法后面首字母小写英文
获取属性
BeanUtils.setProperty(Object bean, String propertyName, String propertyValue):根据set方法后面首字母小写英文设置属性
BeanUtils.populate(Map map, Object bean):将Map数据封装到JavaBean对象中CommontUtils.toBean(Map map, Class class):补充的工具类方法,以下为工具类
package Tool;
import java.util.Map;
import java.util.UUID;
import javax.swing.text.StyledEditorKit.ForegroundAction;
import org.apache.commons.beanutils.BeanUtils;
public class commonUtils {
//生成不重复的32位长的大写字符串
public static String uuid() {
return UUID.randomUUID().toString().replace("-", "").toUpperCase();
}
// 把map转换成指定类型的javaBean对象
public static <T> T toBean(Map map, Class<T> clazz) {
try {
/*
* 1. 创建指定类型的javabean对象
*/
T bean = clazz.newInstance();
/*
* 2. 把数据封装到javabean中
*/
BeanUtils.populate(bean, map);
/*
* 3. 返回javabean对象
*/
return bean;
} catch(Exception e) {
throw new RuntimeException(e); //如果想让用户调用时不用try-catch,使用throw new RuntimeException(e)来抛出运行异常
}
}
}