JavaBean
JavaBean的内省操作是java中对特殊的java类的反射,说白了也就是对java类的反射,不过现在反射的类是javabean,javabean 是这样一种特殊的类,他封装了许多私有的属性,这个属性可以是基本类型,也可以是引用类型,接着提供了对这些属性的访问器和修改器,就是我们说的get方法和set方法。不过java中提供了专门操作javabean的工具类。之所以有必要提供专门的javabean操作工具,是因为javabean的特殊结构。
其中对JavaBean操作的 有PropertyDescriptor这个属性描述符,但是他只是在你知道javabean的前提下,对已知的javaBean 的属性的获取,如果属性未知则不能创建对象。以为PropertyDescriptor 是描述特定的javabean属性的类,没有属性则不能获取对象。
JavaBean的属性名的命名规则:
1)类中所有的属性最好定义为私有的
2)类中定义函数setXxx()和getXxx()来对属性进行操作。其中Xxx是首字母大写的私有变量名称。
例如:
class Person{
private int x;
//因为只需要设置,没有返回值,需要传入参数
void setAge(int age){
return x;
}
//因为只需要得到,就要有返回值,不需要传入参数
int getAge(){
this.x = age;
}
可以不用都要写
如果只需要设置一个值,就只用set,不用get
若第二个字母是小写的,则把第一个字母变成小写的 getAge-->age
若第二个字母是大写的,那么第一个字母就保持原样大写。getCPU-->CPU
内省的简单操作
PropertyDescriptor,描述 Java Bean的一个属性。获取属性名称及对象后使用getReadMethod或getWriteMethod方法返回一个Method对象,最后再调用invoke()。
构造方法:
BeanUtils工具包的应用:
BeanUtils类处理成员属性的时候,是以字符串的方式来处理的。
方法:
BeanUtils.getProperty(Object pbj,String PropertyName)
BeanUtils.setProperty(Object pbj,String PropertyName,Object value)
在BeanUtils中,get方法和set方法里面的操作值的都是String类型的。
PropertiyUtils类:
PropertiyUtils类处理成员属性时,按成员属性自身的类型来处理。
PropertiyUtils.getProperty(Object pbj,String PropertyName)
PropertiyUtils.setProperty(Object pbj,String PropertyName,Object value)
import java.beans.*;
import java.lang.*;
public class TestBean{
public static void main(String args[]) throws Exception{
Students stu=new Students('wangying',24);
PropertyDescriptor pd=new PropertyDescriptor('name',stu.getClass());
Method methodGetName=pd.getReadMethod();
System.out.println(methodGetName.invoke(stu));
Method methodSetName=pd.getWriteMethod();
methodSetName.invoke(stu,'fengxin');
System.out.println(methodGetName.invoke(stu));
}