模块  java.desktop

Package java.beans

包含与开发bean相关的类 - 基于JavaBeans™体系结构的组件。 bean在应用程序中运行时会使用一些类。 例如,事件类由触发属性和可否决更改事件的bean使用(请参阅PropertyChangeEvent )。 但是,此包中的大多数类都是由bean编辑器使用的(即,用于自定义和组合bean以创建应用程序的开发环境)。 特别是,这些类有助于bean编辑器创建用户界面,用户可以使用该界面来自定义bean。 例如,bean可能包含bean编辑器可能不知道如何处理的特殊类型的属性。 通过使用PropertyEditor接口,bean开发人员可以为此特殊类型提供编辑器。

为了最小化bean使用的资源,bean编辑器使用的类仅在编辑bean时加载。 bean在应用程序中运行时不需要它们,因此不会加载。 此信息保存在所谓的bean-info中(参见BeanInfo )。

除非明确说明,否则null值或空字符串不是此包中方法的有效参数。 如果使用这些参数,您可能会看到异常。

长期持久性

从v1.4开始, java.beans包提供对长期持久性的支持 - 读取和写入bean作为其属性值的文本表示。 属性值被视为bean,并以递归方式读取或写入以捕获其公共可用状态。 这种方法适用于长期存储,因为它仅依赖于公共API,而不是可能更改的私有实现。

Note: The persistence scheme cannot automatically instantiate custom inner classes, such as you might use for event handlers. By using the EventHandler class instead of inner classes for custom event handlers, you can avoid this problem.

您可以分别使用XMLDecoderXMLEncoder类以XML格式读写bean。 持久性方案的一个值得注意的特性是读取bean不需要特殊的bean知识。

另一方面,写出bean有时需要特殊的bean类型知识。 如果bean的状态只能使用无参数构造函数和属性的公共getter和setter方法来表示,则不需要特殊的知识。 否则,bean需要一个自定义持久性委托 - 一个负责写出特定类型bean的对象。 JDK中提供的所有类(从java.awt.Component )及其所有属性都自动具有持久性委托。

如果您需要(或选择)为bean提供持久性委托,您可以使用DefaultPersistenceDelegate实例或创建自己的子类PersistenceDelegate 如果bean需要持久委托的唯一原因是因为您想要使用属性值作为参数调用bean的构造函数,则可以使用单参数DefaultPersistenceDelegate构造函数创建bean的持久委托。 否则,您需要实现自己的持久性委托,您可能需要以下类:

PersistenceDelegate
所有持久委托所从的抽象类。 您的子类应该使用其bean类型的知识来提供创建bean并恢复其状态所需的StatementExpression
Statement
表示对对象的单个方法的调用。 包含该方法的一组参数。
Expression
Statement的子类,用于返回值的方法。

一旦你创建一个持久委托,您可以使用它注册setPersistenceDelegate的方法XMLEncoder

相关文档

有关概述,体系结构和教程文档,请参阅: