模块 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 theEventHandler
class instead of inner classes for custom event handlers, you can avoid this problem.
您可以分别使用XMLDecoder
和XMLEncoder
类以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并恢复其状态所需的
Statement
和Expression
。 -
Statement
- 表示对对象的单个方法的调用。 包含该方法的一组参数。
-
Expression
-
Statement
的子类,用于返回值的方法。
一旦你创建一个持久委托,您可以使用它注册setPersistenceDelegate
的方法XMLEncoder
。
相关文档
有关概述,体系结构和教程文档,请参阅:- JavaBeans , “Java教程”中的 一篇文章 。
- Long-Term Persistence , The Swing Connection中的一篇文章。
-
接口摘要 接口 描述 AppletInitializer Deprecated. The Applet API is deprecated.BeanInfo 使用BeanInfo
接口创建BeanInfo
类,并提供有关bean的方法,属性,事件和其他功能的显式信息。Customizer 定制程序类提供了一个完整的自定义GUI,用于自定义目标Java Bean。DesignMode 此接口旨在由java.beans.beancontext.BeanContext的实例实现或委派,以便传播到其嵌套的java.beans.beancontext.BeanContextChild实例的层次结构,即当前的“designTime”属性。ExceptionListener 向ExceptionListener通知内部异常。PropertyChangeListener 每当bean更改“bound”属性时,都会触发“PropertyChange”事件。PropertyEditor PropertyEditor类为希望允许用户编辑给定类型的属性值的GUI提供支持。VetoableChangeListener 每当bean更改“约束”属性时,都会触发VetoableChange事件。Visibility 在某些情况下,可以在GUI不可用的服务器上运行bean。 -
类摘要 类 描述 BeanDescriptor BeanDescriptor提供有关“bean”的全局信息,包括其Java类,displayName等。Beans 该类提供了一些通用bean控件方法。DefaultPersistenceDelegate DefaultPersistenceDelegate
是抽象PersistenceDelegate
类的具体实现,是默认情况下用于没有可用信息的类的委托。Encoder Encoder
是一个类,可用于创建根据其公共API编码JavaBeans集合状态的文件或流。EventHandler EventHandler
类为动态生成事件侦听器提供支持,其方法执行涉及传入事件对象和目标对象的简单语句。EventSetDescriptor EventSetDescriptor描述给定Java bean触发的一组事件。Expression Expression
对象表示一个基本表达式,其中单个方法应用于目标,一组参数用于返回结果 - 如"a.getFoo()"
。FeatureDescriptor FeatureDescriptor类是PropertyDescriptor,EventSetDescriptor和MethodDescriptor等的通用基类。IndexedPropertyChangeEvent 只要符合JavaBeans™规范(“bean”)的组件更改绑定的索引属性,就会传递“IndexedPropertyChange”事件。IndexedPropertyDescriptor IndexedPropertyDescriptor描述了一个属性类似于数组的属性,并具有索引读取和/或索引写入方法来访问数组的特定元素。Introspector Introspector类为工具提供了一种标准方法,可以了解目标Java Bean支持的属性,事件和方法。MethodDescriptor MethodDescriptor描述了Java Bean支持从其他组件进行外部访问的特定方法。ParameterDescriptor 除了java.lang.reflect.Method类提供的低级类型信息之外,ParameterDescriptor类允许bean实现者提供有关其每个参数的附加信息。PersistenceDelegate PersistenceDelegate类负责根据类的公共API中的方法表达给定类的实例的状态。PropertyChangeEvent 每当bean更改“绑定”或“约束”属性时,都会传递“PropertyChange”事件。PropertyChangeListenerProxy 扩展EventListenerProxy
类,专门用于添加带有“bound”属性的PropertyChangeListener
。PropertyChangeSupport 这是一个可以由支持绑定属性的bean使用的实用程序类。PropertyDescriptor PropertyDescriptor描述了Java Bean通过一对存取方法导出的一个属性。PropertyEditorManager PropertyEditorManager可用于查找任何给定类型名称的属性编辑器。PropertyEditorSupport 这是一个帮助构建属性编辑器的支持类。SimpleBeanInfo 这是一个支持类,使人们更容易提供BeanInfo类。Statement Statement
对象表示一个基本语句,其中单个方法应用于目标和一组参数 - 如"a.setFoo(b)"
。VetoableChangeListenerProxy 扩展EventListenerProxy
类,专门用于添加具有“约束”属性的VetoableChangeListener
。VetoableChangeSupport 这是一个可以由支持约束属性的bean使用的实用程序类。XMLDecoder 该XMLDecoder
类用于读取使用创建的XML文档XMLEncoder
,并用于就像ObjectInputStream
。XMLEncoder 所述XMLEncoder
类是互补替代ObjectOutputStream
,并且可以用于产生以相同的方式,该一个 JavaBean的文本表示ObjectOutputStream
可以用来创建的二进制表示Serializable
对象。 -
异常摘要 异常 描述 IntrospectionException 在Introspection期间发生异常时抛出。PropertyVetoException 当对属性的建议更改表示不可接受的值时,将引发PropertyVetoException。 -
注解类型摘要 Annotation Type 描述 BeanProperty 用于为自动生成的BeanInfo
类指定某些属性相关信息的注释。ConstructorProperties 构造函数上的注释,显示该构造函数的参数如何与构造对象的getter方法相对应。JavaBean 用于为自动生成的BeanInfo
类指定某些类相关信息的注释。Transient 指示当Introspector
构造与带注释的代码元素关联的PropertyDescriptor
或EventSetDescriptor
类时,应使用给定的value
声明名为“transient”的属性。