java.lang.Object
java.beans.PersistenceDelegate
java.beans.DefaultPersistenceDelegate
DefaultPersistenceDelegate 是抽象类 PersistenceDelegate 的具体实现,是默认情况下用于没有可用信息的类的委托。 DefaultPersistenceDelegate 为遵循 JavaBeans 约定的类提供版本弹性、基于公共 API 的持久性,无需任何类特定配置。
关键假设是该类有一个 nullary 构造函数,并且它的状态由匹配的“setter”和“getter”方法对按照内省器返回的顺序准确表示。除了为 JavaBeans 提供无代码持久性之外,DefaultPersistenceDelegate 还提供了一种方便的方法来实现类的持久性存储,这些类具有构造函数,虽然不是空的,但只需要一些属性值作为参数。
- 自从:
- 1.4
- 参见:
-
构造方法总结
构造方法构造方法描述为具有 nullary 构造方法的类创建持久性委托。DefaultPersistenceDelegate(String[] constructorPropertyNames) 使用构造函数为类创建默认持久性委托,构造函数的参数是constructorPropertyNames指定的属性名称的值。 -
方法总结
修饰符和类型方法描述protected voidinitialize(Class<?> type, Object oldInstance, Object newInstance, Encoder out) initialize方法的这个默认实现假定保存在这种类型的对象中的所有状态都按照内省器返回的顺序通过匹配的“setter”和“getter”方法对公开。protected Expressioninstantiate(Object oldInstance, Encoder out) instantiate方法的默认实现返回一个包含预定义方法名称“new”的表达式,表示使用DefaultPersistenceDelegate的构造函数中指定的参数调用构造函数。protected boolean如果指定构造函数中的参数数量不为零,并且oldInstance的类显式声明了“等于”方法,则此方法返回oldInstance.equals(newInstance)的值。在类 java.beans.PersistenceDelegate 中声明的方法
writeObject
-
构造方法详细信息
-
DefaultPersistenceDelegate
public DefaultPersistenceDelegate()为具有 nullary 构造方法的类创建持久性委托。- 参见:
-
DefaultPersistenceDelegate
使用构造函数为类创建默认持久性委托,构造函数的参数是constructorPropertyNames指定的属性名称的值。构造函数参数是通过按提供的顺序评估属性名称来创建的。要使用此类指定单个首选构造函数以用于特定类型的序列化,我们声明构成构造函数参数的属性的名称。例如,未定义 nullary 构造函数的Font类可以使用以下持久性委托处理:new DefaultPersistenceDelegate(new String[]{"name", "style", "size"});- 参数:
constructorPropertyNames- 此构造函数参数的属性名称。- 参见:
-
-
方法详情
-
mutatesTo
如果指定构造函数中的参数数量不为零,并且oldInstance的类显式声明了“等于”方法,则此方法返回oldInstance.equals(newInstance)的值。否则,此方法使用超类的定义,如果两个实例的类相等,则返回 true。- 重写:
mutatesTo在类PersistenceDelegate中- 参数:
oldInstance- 要复制的实例。newInstance- 要修改的实例。- 返回:
-
如果可以通过对
oldInstance应用一系列突变来创建newInstance的等效副本,则为真。 - 参见:
-
instantiate
instantiate方法的默认实现返回一个包含预定义方法名称“new”的表达式,表示使用DefaultPersistenceDelegate的构造函数中指定的参数调用构造函数。- 指定者:
instantiate在类PersistenceDelegate中- 参数:
oldInstance- 要实例化的实例。out- 代码输出流。- 返回:
-
值为
oldInstance的表达式。 - 抛出:
NullPointerException- 如果out是null并且该值用于该方法- 参见:
-
initialize
initialize方法的这个默认实现假定保存在这种类型的对象中的所有状态都按照内省器返回的顺序通过匹配的“setter”和“getter”方法对公开。如果属性描述符定义了一个值等于Boolean.TRUE的“瞬态”属性,则此默认实现将忽略该属性。请注意,“瞬态”一词的这种使用完全独立于ObjectOutputStream使用的字段修饰符。对于每个非瞬态属性,都会创建一个表达式,其中 nullary“getter”方法应用于
oldInstance。此表达式的值是正在序列化的实例中的属性值。如果克隆环境中此表达式的值mutatesTo目标值,则初始化新值使其等同于旧值。在这种情况下,因为属性值没有改变,所以不需要调用相应的“setter”方法,也不会发出任何语句。但是,如果不是,则此值的表达式将替换为另一个表达式(通常是构造函数),并调用相应的“setter”方法以在对象中安装新的属性值。此方案使用此委托从流生成的输出中删除默认信息。在将这些语句传递到将在其中执行的输出流时,会对
newInstance产生副作用。在大多数情况下,这允许值相互依赖的属性问题通过减少需要写入输出的语句数量来实际帮助序列化过程。通常,处理相互依赖的属性的问题被简化为寻找类中属性的顺序,使得没有属性值依赖于后续属性的值。- 重写:
initialize在类PersistenceDelegate中- 参数:
type- 实例的类型oldInstance- 要复制的实例。newInstance- 要修改的实例。out- 应写入任何初始化语句的流。- 抛出:
NullPointerException- 如果out是null- 参见:
-