一、什么是JavaBean
Java类--->JavaBean
class Person
{
private int x;
public int getAge(){
return x;
}
public void setAge(int age){
this.x = age;
}
}
属性名:
Age-->如果第二个字母是小写,则把第一个字母变小写的-->age
gettime-->time
getTime-->time
getCPU-->CPU
二、对JavaBean的简单内省操作
ReflectPoint pt1 = new ReflectPoint(3,5);
String propertyName = "x";
//"x"-->"X"-->"getX"-->MethodGetX-->
//get方法
PropertyDescriptor pd = new PropertyDescriptor(propertyName,pt1.getClass());
Method methodGetX = pd.getReadMethod();
Object retVal = methodGetX.invoke(pt1);
//set方法
PropertyDescriptor pd2 = new PropertyDescriptor(propertyName,pt1.getClass());
Method methodSetX = pd2.getWriteMethod();
methodSetX.invoke(pt1,value);
三、对JavaBean的复杂内省操作
ReflectPoint pt1 = new ReflectPoint(3,5);
String propertyName = "x";
//"x"-->"X"-->"getX"-->MethodGetX-->
//get方法
BeanInfo beanInfo = Introspector.getBeanInfo(pt1.getClass());
PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors();
Object retVal = null;
for(PropertyDescriptor pd : pds){
if(pd.getName().equals(propertyName))
{
Method methodGetX = pd.getReadMethod();
retVal = methodGetX.invoke(pt1);
break;
}
}
四、使用BeanUtils工具包操作JavaBean
1、build path引入beannutils包和logging包
2、使用方法
System.out.println(BeanUtils.getProperty(pt1, "x").getClass().getName());
//输出java.lang.String
BeanUtils.setProperty(pt1, "x", "9");
System.out.println(pt1.getX());
//输出9
/*
//java7的新特性
Map map = {name:"zxx",age:18};
BeanUtils.setProperty(map, "name", "lhm");
*/
BeanUtils.setProperty(pt1, "birthday.time", "111");
System.out.println(BeanUtils.getProperty(pt1, "birthday.time"));
//输出111
PropertyUtils.setProperty(pt1, "x", 9);
System.out.println(PropertyUtils.getProperty(pt1, "x").getClass().getName());
//输出java.lang.Integer