标题：java.beans
软件包 java.beans 的描述
包含与开发 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 
表示某一对象上的单个方法的调用。包括该方法的参数集合。 
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 的方法、属性、事件等显式信息。Customizercustomizer 类提供一个用来自定义目标 Java Bean 的完全自定义 GUI。DesignMode此接口由 java.beans.beancontext.BeanContext 的实例实现或委托，以便将当前的 "designTime" 属性传播到 java.beans.beancontext.BeanContextChild 实例的嵌套层次结构。ExceptionListenerExceptionListener 是在发生内部异常时获得通知。PropertyChangeListener无论 bean 何时更改 "bound" 属性，都会激发一个 "PropertyChange" 事件。PropertyEditorPropertyEditor 类为希望允许用户编辑某个给定类型的属性值的 GUI 提供支持。VetoableChangeListener只要 bean 更改 "constrained" 属性，都将会激发一个 VetoableChange 事件。Visibility在某些情况下，bean 可能运行在 GUI 不可用的服务器上。
类摘要
BeanDescriptorBeanDescriptor 提供有关 "bean" 的全局信息，其中包括其 Java 类、其 displayName 等等。Beans此类提供一些通用的 bean 控制方法。DefaultPersistenceDelegateDefaultPersistenceDelegate 是 PersistenceDelegate 抽象类的具体实现，是没有关于其可用信息的类在默认情况下使用的委托。EncoderEncoder 是这样的类，它可用于创建根据其公共 API 对 JavaBeans 集合状态进行编码的文件或流。EventHandlerEventHandler 类为动态生成事件侦听器提供支持，这些侦听器的方法执行一条涉及传入事件对象和目标对象的简单语句。EventSetDescriptor描述给定 Java bean 激发的一组事件的 EventSetDescriptor。ExpressionExpression 对象表示基本表达式，其中将单个方法应用于某一目标和一组参数，以返回结果，与在 "a.getFoo()" 中一样。FeatureDescriptorFeatureDescriptor 类是 PropertyDescriptor、EventSetDescriptor 和 MethodDescriptor 等的公共基类。IndexedPropertyChangeEvent无论何时遵守 JavaBeans 规范的组件（"bean"）更改绑定 (bound) 索引 (indexed) 属性，都会提交一个 "IndexedPropertyChange" 事件。IndexedPropertyDescriptorIndexedPropertyDescriptor 描述了类似数组行为的属性，且有一种访问数组特定元素的索引读和/或索引写方法。IntrospectorIntrospector 类为通过工具学习有关受目标 Java Bean 支持的属性、事件和方法的知识提供了一个标准方法。MethodDescriptorMethodDescriptor 描述了一种特殊方法，即 Java Bean 支持从其他组件对其进行外部访问。ParameterDescriptorParameterDescriptor 类允许 bean 实现者提供除 java.lang.reflect.Method 类提供的低级别信息之外的关于其每个参数的额外信息。PersistenceDelegatePersistenceDelegate 类负责根据类的公共 API 中的方法表示给定类的实例状态。PropertyChangeEvent无论 bean 何时更改 "bound" 或 "constrained" 属性，都会提交一个 "PropertyChange" 事件。PropertyChangeListenerProxy扩展 EventListenerProxy 的类，特别适用于添加指定的 PropertyChangeListener。PropertyChangeSupport这是一个实用工具类，支持绑定 (bound) 属性的 bean 可以使用该类。PropertyDescriptorPropertyDescriptor 描述 Java Bean 通过一对存储器方法导出的一个属性。PropertyEditorManagerPropertyEditorManager 可用于查找任何给定类型名称的属性编辑器。PropertyEditorSupport这是一个帮助构建属性编辑器的支持类。SimpleBeanInfo这是一个使得用户提供 BeanInfo 类更容易的支持类。StatementStatement 对象表示基本语句，其中将单个方法应用于某一目标和一组参数，以返回结果，比如 "a.setFoo(b)"。VetoableChangeListenerProxy扩展 EventListenerProxy 的类，特别适用于将 VetoableChangeListener 与 "constrained" 属性相关联。VetoableChangeSupport这是一个实用工具类，支持约束 (constrained) 属性的 bean 可以使用此类。XMLDecoderXMLDecoder 类用于读取使用 XMLEncoder 创建的 XML 文档，用途类似于 ObjectInputStream。XMLEncoderXMLEncoder 类是 ObjectOutputStream 的互补替换，可用于生成 JavaBean 的文本表示形式，所使用方式与用 ObjectOutputStream 创建 Serializable 对象的二进制表示形式的方式相同。