java.beans
java.beans
bean(即Java bean)就是Java的類,或者說,就是Java語言的組件,充分體現了Java語言平台獨立和面向對象編程的優勢。JavaBeans是一代網路程序員的資源。它是Java語言的組件:bean的介面和通訊部分的標準,實現了bean的復用。
包含與開發 beans 有關的類,即基於 JavaBeansTM架構的組件。少數類可由bean使用,也能以應用程序的形式運行。例如,event 類由激發屬性和禁止更改事件的 bean 使用(參見 PropertyChangeEvent)。不過,此包中的大多數類由 bean 編輯器(即自定義 bean 並將其彙集起來以創建應用程序的開發環境)使用。特別要指出的是,這些類幫助 bean 編輯器創建用戶可以用來自定義 bean 的用戶界面。例如,bean 可能包含 bean 編輯器也許不知道如何處理的特殊類型的屬性。通過使用 PropertyEditor 介面,bean 開發人員可以為此特殊類型提供一個編輯器。
為了最大限度地減少 bean 使用的資源,只在要編輯 bean 時載入 bean 編輯器使用的類。當 bean 以應用程序的形式運行時,不需要這些類,所以不用載入它們。此信息在稱為 bean-info 的類中(參見 BeanInfo)。
除非顯式聲明,否則 null值或空String對於此包中的方法是無效參數。如果使用這些參數,可能將引發異常。
從 v1.4 開始,java.beans 包提供了對長期持久性 的支持,即以其屬性值的文本表示形式讀取或寫入 bean。這些屬性值被視為 bean,它們被遞歸地讀取或寫入,以捕獲其公共可用狀態。此方法適用於長期存儲,因為它只依賴於公共 API 而不是很可能發生更改的私有實現。
註:持久性方案無法自動實例化自定義內部類,比如用於事件處理程序的類。通過使用 EventHandler 類而不是自定義事件處理程序的內部類,可以避免此問題。
可分別使用 XMLDecoder 和 XMLEncoder 類讀取和寫入XML格式的 bean。持久性方案的一個顯著特性是,讀入 bean 不需要該 bean 的特定信息。
另一方面,讀出 bean 有時需要 bean 類型的特定信息。如果可以只使用屬性的無參數構造方法以及公共 getter 和 setter 方法表達 bean 的狀態,則無需 bean 的特定信息。否則,bean 需要一個自定義持久委託,即負責寫出特殊類型的 bean 的對象。從 java.awt.Component 中遺傳的JDK中提供的所有類及其所有屬性都將自動擁有持久委託。
如果需要(或選擇)為 bean 提供持久委託,則可以通過使用 DefaultPersistenceDelegate 實例或通過創建自己的 PersistenceDelegate 子類來實現。如果 bean 需要持久委託的惟一原因是因為用戶想調用 bean 使用屬性值作為參數的構造方法,則可以使用無參數的 DefaultPersistenceDelegate 構造方法創建 bean 的持久委託。否則,用戶需要實現自己的持久委託,對此,可能需要以下類:
PersistenceDelegate
這是一個抽象類,所有持久委託都是從它遺傳的。子類應該使用它所知的 bean 類型信息來提供創建 bean 和恢復其狀態所需的任何 Statement 和 Expression。
表示某一對象上的單個方法的調用。包括該方法的參數集合。
用於返回一個值的那些方法的 Statement 的子類。
一旦創建了一個持久委託,就可以使用 XMLEncoder 的 setPersistenceDelegate 方法註冊它。
相關文檔
有關概述、架構和教程文檔的信息,請參閱:
JavaBeans,《The Java Tutorial》中的一部分。
Long-Term Persistence,The Swing Connection 中的一篇文章
AppletInitializer | 此介面設計用於與 java.beans.Beans.instantiate 聯合使用。 |
BeanInfo | 希望提供有關其 bean 的顯式信息的 bean 實現者可以提供某個 BeanInfo 類,該類實現此 BeanInfo 介面並提供有關其 bean 的方法、屬性、事件等顯式信息。 |
Customizer | customizer 類提供一個用來自定義目標 Java Bean 的完全自定義 GUI。 |
DesignMode | 此介面由 java.beans.beancontext.BeanContext 的實例實現或委託,以便將當前的 "designTime" 屬性傳播到 java.beans.beancontext.BeanContextChild 實例的嵌套層次結構。 |
ExceptionListener | ExceptionListener 是在發生內部異常時獲得通知。 |
PropertyChangeListener | 無論 bean 何時更改 "bound" 屬性,都會激發一個 "PropertyChange" 事件。 |
PropertyEditor | PropertyEditor 類為希望允許用戶編輯某個給定類型的屬性值的 GUI 提供支持。 |
VetoableChangeListener | 只要 bean 更改 "constrained" 屬性,都將會激發一個 VetoableChange 事件。 |
Visibility | 在某些情況下,bean 可能運行在 GUI 不可用的伺服器上。 |
BeanDescriptor | BeanDescriptor 提供有關 "bean" 的全局信息,其中包括其 Java 類、其 displayName 等等。 |
Beans | 此類提供一些通用的 bean 控制方法。 |
DefaultPersistenceDelegate | DefaultPersistenceDelegate 是 PersistenceDelegate 抽象類的具體實現,是沒有關於其可用信息的類在默認情況下使用的委託。 |
Encoder | Encoder 是這樣的類,它可用於創建根據其公共 API 對 JavaBeans 集合狀態進行編碼的文件或流。 |
EventHandler | EventHandler 類為動態生成事件偵聽器提供支持,這些偵聽器的方法執行一條涉及傳入事件對象和目標對象的簡單語句。 |
EventSetDescriptor | 描述給定 Java bean 激發的一組事件的 EventSetDescriptor。 |
Expression | Expression 對象表示基本表達式,其中將單個方法應用於某一目標和一組參數,以返回結果,與在 "a.getFoo()" 中一樣。 |
FeatureDescriptor | FeatureDescriptor 類是 PropertyDescriptor、EventSetDescriptor 和 MethodDescriptor 等的公共基類。 |
IndexedPropertyChangeEvent | 無論何時遵守 JavaBeans 規範的組件("bean")更改綁定 (bound) 索引 (indexed) 屬性,都會提交一個 "IndexedPropertyChange" 事件。 |
IndexedPropertyDescriptor | IndexedPropertyDescriptor 描述了類似數組行為的屬性,且有一種訪問數組特定元素的索引讀和/或索引寫方法。 |
Introspector | Introspector 類為通過工具學習有關受目標 Java Bean 支持的屬性、事件和方法的知識提供了一個標準方法。 |
MethodDescriptor | MethodDescriptor 描述了一種特殊方法,即 Java Bean 支持從其他組件對其進行外部訪問。 |
ParameterDescriptor | ParameterDescriptor 類允許 bean 實現者提供除 java.lang.reflect.Method 類提供的低級別信息之外的關於其每個參數的額外信息。 |
PersistenceDelegate | PersistenceDelegate 類負責根據類的公共 API 中的方法表示給定類的實例狀態。 |
PropertyChangeEvent | 無論 bean 何時更改 "bound" 或 "constrained" 屬性,都會提交一個 "PropertyChange" 事件。 |
PropertyChangeListenerProxy | 擴展 EventListenerProxy 的類,特別適用於添加指定的 PropertyChangeListener。 |
PropertyChangeSupport | 這是一個實用工具類,支持綁定 (bound) 屬性的 bean 可以使用該類。 |
PropertyDescriptor | PropertyDescriptor 描述 Java Bean 通過一對存儲器方法導出的一個屬性。 |
PropertyEditorManager | PropertyEditorManager 可用於查找任何給定類型名稱的屬性編輯器。 |
PropertyEditorSupport | 這是一個幫助構建屬性編輯器的支持類。 |
SimpleBeanInfo | 這是一個使得用戶提供 BeanInfo 類更容易的支持類。 |
Statement | Statement 對象表示基本語句,其中將單個方法應用於某一目標和一組參數,以返回結果,比如 "a.setFoo(b)"。 |
VetoableChangeListenerProxy | 擴展 EventListenerProxy 的類,特別適用於將 VetoableChangeListener 與 "constrained" 屬性相關聯。 |
VetoableChangeSupport | 這是一個實用工具類,支持約束 (constrained) 屬性的 bean 可以使用此類。 |
XMLDecoder | XMLDecoder 類用於讀取使用 XMLEncoder 創建的 XML 文檔,用途類似於 ObjectInputStream。 |
XMLEncoder | XMLEncoder 類是 ObjectOutputStream 的互補替換,可用於生成 JavaBean 的文本表示形式,所使用方式與用 ObjectOutputStream 創建 Serializable 對象的二進位表示形式的方式相同。 |