javabean是什么?规范写法及结构属性介绍( 二 )


2.5. Java Bean的结构
(1)属性:即Java Bean类的成员变量,用于描述JavaBean对象的状态,对象属性值的改变触发事件,属性本身就是事件源 。
(2)方法:在Java Bean中,函数和过程统称为方法,通过方法来改变和获取属性的值 。方法可以分为构造方法、访问方法和普通方法等 。
(3)事件:事件实际上是一种特殊的Java Bean,属性值的改变触发事件,事件激发相关对象作出反应,通过Java Bean注册对象事件监听者机制来接收、处理事件,它实现了Java Bean之间的通信 。
三. Java Bean属性
在上一节中我们简单提到了JavaBean的属性,Java Bean的属性与一般Java程序中所指的属性,或者说与所有面向对象的程序设计语言中对象的属性是一个概念,在程序中的具体体现就是类中的变量 。属性分为四类,即单值(Simple)、索引(Index)、关联(Bound)和约束(Constrained)属性 。本节将对这些属性进行详细说明 。
3.1. 单值(simple)属性
单值(Simple)属性是最普通的属性类型,该类属性只有一个单一的数据值,该数据值的数据类型可以是Java中的任意数据类型,包括类和接口等类型 。
定义了属性,还需定义对应的访问方法,一般每个单值属性都伴随有一对get/set方法 。属性名与和该属性相关的get/set方法名对应 。例如如果有一个名为“xxx”的属性,则会有setXxx和getXxx方法 。
另外,布尔(Boolean)属性是一种特殊的单值属性,它只有两个允许值:true和false,如果有一个名为“xxx”的布尔属性,则可以通过isX方法访问 。
3.2. 索引(Indexed)属性
如果需要定义一批同类型的属性,使用单值属性就会显得非常烦琐,为解决此问题,JavaBean中提供了索引(Indexed) 属性,索引属性是指JavaBean中数组类型的成员变量 。使用与该属性对应的set/get方法可取得数组的值 。索引属性通过对应的访问方法设置或取得该属性中某个元素的值,也可以一次设置或取得整个属性的值 。
3.3. 关联(Bound)属性
关联(Bound)属性是指当该种属性的值发生变化时,要通知其他的对象 。每次属性值改变时,这种属性就触发一个PropertyChange事件(在Java程序中,事件也是一个对象) 。事件中封装了属性名、属性的原值、属性变化后的新值 。这种事件传递到其他的Beans,至于接收事件的Beans应做什么动作,由其自己定义 。
属性的改变称为JavaBean事件 。外部与Java Bean这些事件相关的类对象称为监听者(Listener) 。监听者可能只对JavaBean某一属性相关的事件有兴趣,也可能对所有属性相关的事件有兴趣,因此JavaBean提供两类事件监听者注册和注销的方法,即全局事件监听者注册、注销的方法和一般事件监听者注册、注销的方法 。
3.4. 约束(Constrained)属性
Java Bean的属性如果改变时,相关的外部类对象首先要检查这个属性改变的合理性再决定是否接受这种改变,这样的JavaBean属性叫约束(Constrained)属性 。当约束属性的改变被拒绝时,改变约束属性的方法产生一个约束属性改变异常(PropertyVetoException),通过这个异常处理,JavaBean约束属性还原回原来的值,并为这个还原操作发送一个新的属性修改通知 。
约束属性的改变可能会被拒绝,因此它的setXxx与一般其他JavaBean属性的setXxx也有所不同 。约束属性的写方法如下:
public void setXxx(xxxType newXxx)throws PropertyVetoException
四. Java Bean方法
4.1. 构造方法
Java Bean的构造方法与与之前的普通java类的构造方法意思是一样的,就是对JavaBean的属性及其方法进行初始化,即对所定义的属性及方法设一个初始值,构造方法名要和JavaBean的类名相同 。

推荐阅读