----------------------
ASP.Net+Unity开发、
.Net培训、期待与您交流! ----------------------
java内省学习总结:
1.关于javabean:JavaBean是一种特殊的java类,主要用于传递数据信息,这种java类中的方法主要用于访问私有字段,且方法名符合某种命名规范。当一个类符合某种特殊的命名规则时,如函数以get或set开头,就可以把这样的类当成javabean类来使用,以get或set开头的函数的访问权限都为public
2.javabean类的属性是根据函数名(以get或set开头)来推断的,去掉函数的get或set前缀后的名称即为属性名(当第二个字母是小写时把第一个字母小写,当第二个字母是小写时首字母保持原样)。
3.一个符合javabean特点的类可以当成普通类来使用,但当成javabean可以带来额外的好处。
4.如果要在两个模块之间传递多个信息,可以将这些信息封装到一个javabean中,这种JavaBean的实例对象通常称为值对象。
以下是对常用的对javabean操作的一些示例代码,用作测试的JavaBean为Test类:
/**
* 这个是演示JavaBean的测试类,该类中定义了一些私有的属性,并提供了属性的get和set
* 方法.
*/
class Test{
int x=0;
int y=0;
java.util.Date birthday=new java.util.Date();
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
public java.util.Date getBirthday(){
return this.birthday;
}
public void setBirthday(java.util.Date birthday){
this.birthday=birthday;
}
}
}
1.通过PropertyDescriptor类获得一个类的某个属性的get方法,以test类为例:
/**
* PropertyDescriptor是sun公司原生自带的操作javabean的类,通过该类获取javabean的属性的读方法
* 和写方法,然后通过读方法和写方法操作javabean的属性值,通过PropertyDescriptor操作javabean
* 比较繁琐,但能操作基本类型属性和复杂类型属性
*
*/
Test t=new Test():
PropertyDescriptor pd==new PropertyDescriptor("x", test.class);//获取该javabean的属性x的属性描述符
Method method=pd.getReadMethod();//获取读方法
method.invoke(t);//通过读方法读取值
Method method1=pd.getWriteMethod();//获取写方法
method.invoke(t,5);//通过写方法写入值
2.通过introSpector类和BeanInfo类获得属性:
{ CSDN:CODE:426415}
3.使用Beantutils设置和读取JavaBean的属性:
/**
* Beanutils是一个很方便操作javabean的工具类库,它不仅能方便的操作javabean中的简单属性
* 还能方便的操作JavaBean中的复杂属性,对于复杂属性的操作,可以通过beanutils中的级联方式
* 进行操作,这样,不管javabean中复杂属性有多复杂,都可以很方便的操作
*
*/
Test t=new Test();
System.out.println(Beanutils.getProperty(t,"x"));//通过Beanutils获得属性值并打印出来
Beanutils.setProperty(t,"x",100);//通过Beantuils设置属性值
//使用Beantutils设置和读取级联属性值,如test中birthday中的time:
System.out.println(Beanutils.getProperty(t,"birthday.time"));//通过Beanutils读取级联属性
Beanutils.setProperty(t,"birthday.time","200");//通过Beanutils设置级联属性
4.使用PropertyUtils设置和读取JavaBean的属性:
/**
* propertyUtils的用法和BeanUtils基本没什么区别,唯一不同的是propertyUtils给属性赋的是实际类型的值
* 这样对于复杂属性也能直接赋值,而beanutils是将字符串通过转换再赋给javabean中的属性的,对于有些类型
* 的属性,beanUtils是不能将字符串转换成对应的实际类型的,这一点上Propertyutils更强一点,不过BeanUtils
* 可以通过注册转换函数来解决这个问题
*/
Test t=new Test():
System.out.println(PropertyUtils.getProperty(t,"x"));// PropertyUtils读取和beanutils没什么区别
PropertyUtils.setProperty(t,"x",155);//PropertyUtils设置属性时用的是属性实际的类型,而不是字符串类型,这和Beanutils的字符串不同
----------------------
ASP.Net+Unity开发、
.Net培训、期待与您交流! ----------------------
详细请查看:www.itheima.com