黑马程序员_9
精品文档
黑马程序员
---------------------- android培训、java培训、期待与您交流! ----------------------
JavaBean 概念:
JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBean 通过提供符合一致性
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
模式的公共方法将内部域暴露成员属性。众所周知,属性名称符合这种模式,其他Java 类可以通过自身机制发现和操作这些JavaBean 属性。
JavaBean是一个类,这类定义了一系列的get和set方法。
JavaBean有一对get和set的方法,属性名就是方法去掉set、get,命名规则是:
Age-->如果第二个字母是小写的,则把第一个字母变成小写-->age
gettime-->time
setTime-->time
getCpu-->CPU如果第二个字母为大写则保持原样不变。
举例:class Person
{
private int x;
1 / 7
精品文档
public int getAge()
{
return x;
}
public void setAge(int age)
{
this.x=age;
}
}
我们可以通过JDK里对JavaBean提供的方法可以进行
操作。通过一个程序来举例说明。
public class IntroSpectorText {
public static void main(String[] args)throws Exception {
ReflectPoint pt1=new ReflectPoint(3,5);
String propertyName="x";
PropertyDescriptor pd=new
PropertyDescriptor(propertyName, pt1.getClass());
Method methodGetX=pd.getReadMethod();
Object retVal=methodGetX.invoke(pt1);
System.out.println(retVal);
PropertyDescriptor pd2=new
2 / 7
精品文档
PropertyDescriptor(propertyName, pt1.getClass());
Method methodSetX=pd2.getWriteMethod();
methodSetX.invoke(pt1,value);
//方法一:
1.首先建立PropertyDescriptor对象,传入要操作的属性名和所属类的字节码,在创建对象后,我们就可以
通过调用ProperDescriptor类中提供方法来操作成员属性了。
.PropertyDescriptor类中提供了getReadMethod 和setWriterMethod方法来获得操作对象,当方法获得
了对象时,这时就可以调用Method类中invoke()方法来调用这个方法来设置或者获得所要求的属性值了。
//方法二:
在JDK中提供了Introspector类来操作JavaBean,Introspector类中提供了getBeanInfo()静态方法来
获得一个BeanInfo对象,BeanInfo类中提供了相应的方法让我们对JavaBean中属性进行操作:
1.首先要得到BeanInfo对象,然后调用getProPertyDescriptors方法来获得所有属性描述(这种方法只能
获得所有属性描述,若要想获得某一个属性描述,只能
3 / 7
精品文档
选择PropertyDescriptor方法),然后迭代判断来
选择我们将要操作的属性进行具体操作:
private static Object getProperty(Object pt1,
String propertyName)
BeanInfo
beanInfo=Introspector.getBeanInfo(pt1.getClass());
//把Java类当作JavaBean来看,beanInfo就代表了
JavaBean的细节信息。
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;
}
}
return retVal;
4 / 7
精品文档
}
//方法三
还有一种对JavaBean的操作方法是:使用BeanUtils
包,此包提供了许多函数,其中有些函数可以很方便的对
JavaBean对象进行操作,在使用之前必须先加载
BeanUtils包,然后才可以使用其中的方法。在这起还要导入
日志logging包.
BeanUtils类中提供了getProperty(Object obj,
String name)可以获得指定属性名的值,返回值
是String型。setProperty(Object obj,String name,String value) 方法可以设置指定属性名的值。
String value=BeanUtils.getProperty(pt1,"x");
BeanUtils.setProperty(pt1, "x", "9");//可以进行
类型自动转换,字符串转成int类型
System.out.println(pt1.getX());
BeanUtils.setProperty(pt1, "birthday.time",
"111");//属性链
System.out.println(BeanUtils.getProperty(pt1,
"birthday.time"));
此外还有PropertyUtils,返回值类型和所需参数不是
String型,当转换出现问题时我们可以选择使用
PropertyUtils类来对JavaBean对象进行操作。BeanUtils
5 / 7
精品文档
是以字符串的形式对JavaBean进行操作(类型转化),而
PropertyUtils是以那个属性的本身类型进行操作(类行不
转换)。
int retVal=PropertyUtils.getProperty(pt1, "x").
PropertyUtils.setProperty(pt1, "x",);
System.out.println( PropertyUtils.getProperty(pt1, "x").getClass().getName());
一切事无法追求完美,唯有追求尽力而为。这样心无压力,
出来的结果反而会更好。
6 / 7
精品文档
感 谢 阅 读~
7 / 7