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的類名相同 。

推薦閱讀