java命名空间java.beans类defaultpersistencedelegate的类成员方法:
initialize定义及介绍
本文导语:
initialize
protected void initialize(class type,
object oldinstance,
object newinstance,
encoder out)
initialize 方法的此默认实现假设保存在此类型对象中的所有状态都是通过匹配 "setter" ...
protected void initialize(class> type,
object oldinstance,
object newinstance,
encoder out)
initialize
方法的此默认实现假设保存在此类型对象中的所有状态都是通过匹配 "setter" 和 "getter" 方法对来公开的,公开的顺序是 introspector 返回它们的顺序。如果属性描述符使用等于 boolean.true
的值来定义一个 "transient"属性,则此默认实现将忽略该属性。注意,单词 "transient" 的使用完全独立于 objectoutputstream
使用的字段修饰符。
对于每个非瞬态属性,创建一个表达式,在其中将非 null "getter" 方法应用于 oldinstance
。此表达式的值是将被序列化实例中的属性值。如果在复制环境中此表达式的值 (mutatesto
目标值),则将初始化新值,使其等于旧值。在这种情况下,因为属性值没有发生更改,所以不需要调用相应的 "setter" 方法,也不需要发出声明。不然的话此值的表达式就会被另一个表达式(通常是一个构造方法)替代,并且要调用相应的 "setter" 方法,在对象中安装新属性值。此方案使用此代理从流生成的输出中移除默认信息。
在将这些语句传递到输出流(这些语句将在其中执行)时,newinstance
将产生副作用。在大多数情况下,这允许其值相互依赖的属性的问题通过减少需要写入到输出的语句量来实际帮助序列化进程。通常,处理相互依赖的属性问题被归结为这样一个问题:找出类中属性的某种顺序,从而没有任何属性依赖后续属性的值。
- 覆盖:
- 类
persistencedelegate
中的 initialize
- 参数:
oldinstance
- 要复制的实例。newinstance
- 需修改的实例。out
- 所有的初始化语句都应该写入其中的流。- 另请参见:
introspector.getbeaninfo(java.lang.class>)
,
propertydescriptor