- java.lang.Object
-
- java.beans.Encoder
-
- 已知直接子类:
-
XMLEncoder
public class Encoder extends Object
一个Encoder
是一个类,可用于创建根据其公共API编写JavaBean集合状态的文件或流。Encoder
与其持久性代表一起负责将对象图分解成一系列可用于创建它的Statement
s和Expression
s。 子类通常使用一些人类可读的形式(如Java源代码或XML)为这些表达式提供语法。- 从以下版本开始:
- 1.4
-
-
构造方法摘要
构造方法 Constructor 描述 Encoder()
-
方法摘要
所有方法 接口方法 具体的方法 Modifier and Type 方法 描述 Object
get(Object oldInstance)
在此流创建的环境中返回oldInstance
的临时值。ExceptionListener
getExceptionListener()
获取此流的异常处理程序。PersistenceDelegate
getPersistenceDelegate(Class<?> type)
返回给定类型的持久代理。Object
remove(Object oldInstance)
删除此实例的条目,返回旧条目。void
setExceptionListener(ExceptionListener exceptionListener)
将此流的异常处理程序设置为exceptionListener
。void
setPersistenceDelegate(Class<?> type, PersistenceDelegate delegate)
将指定的持久性委托与给定类型关联。void
writeExpression(Expression oldExp)
该实现首先检查是否已经写入了具有该值的表达式。protected void
writeObject(Object o)
将指定的对象写入输出流。void
writeStatement(Statement oldStm)
写入报告oldStm
到流。
-
-
-
方法详细信息
-
writeObject
protected void writeObject(Object o)
将指定的对象写入输出流。 序列化形式将表示一系列表达式,其组合效果将在读取输入流时创建一个等效对象。 默认情况下,该对象被假定为具有空值构造函数的JavaBean ,其状态由Introspector返回的匹配的“setter”和“getter”方法对。- 参数
-
o
-o
的对象。 - 另请参见:
-
XMLDecoder.readObject()
-
setExceptionListener
public void setExceptionListener(ExceptionListener exceptionListener)
将此流的异常处理程序设置为exceptionListener
。 当此流捕获可恢复的异常时,将通知异常处理程序。- 参数
-
exceptionListener
- 此流的异常处理程序 如果null
将使用默认异常侦听器。 - 另请参见:
-
getExceptionListener()
-
getExceptionListener
public ExceptionListener getExceptionListener()
获取此流的异常处理程序。- 结果
- 该流的异常处理程序 如果没有明确设置,将返回默认的异常侦听器。
- 另请参见:
-
setExceptionListener(java.beans.ExceptionListener)
-
getPersistenceDelegate
public PersistenceDelegate getPersistenceDelegate(Class<?> type)
返回给定类型的持久代理。 持续委托是按顺序应用以下规则计算的:- 如果使用
setPersistenceDelegate(java.lang.Class<?>, java.beans.PersistenceDelegate)
方法将持久代理与给定类型相关联,则返回它。 - 然后,通过由给定类型的完全限定名称和“PersistenceDelegate”后缀组成的名称查找持久代理。 例如,
Bean
类的持久Bean
应该命名为BeanPersistenceDelegate
并位于同一个包中。public class Bean { ... } public class BeanPersistenceDelegate { ... }
BeanPersistenceDelegate
类的实例返回给Bean
类。 - 如果类型为
null
,则返回共享内部持久性委托,编码null
值。 - 如果该类型是一个
枚举
声明,那么返回一个共享的内部持久性委托,它将通过名称对该枚举的常量进行编码。 - 如果类型是原始类型或相应的包装器,则返回共享内部持久性委托,该委托对给定类型的值进行编码。
- 如果类型是数组,则返回共享的内部持久性委托,该委托对相应类型和长度的数组进行编码,并将其每个元素视为属性。
- 如果类型是代理,则返回使用
Proxy.newProxyInstance(java.lang.ClassLoader, java.lang.Class<?>[], java.lang.reflect.InvocationHandler)
方法对代理实例进行编码的共享内部持久性委托。 - 如果
BeanInfo
这种类型有一个BeanDescriptor
,其定义的“persistenceDelegate”属性,则返回这个命名属性的值。 - 在所有其他情况下,将返回默认持久代理。 默认持久性委托假定该类型是JavaBean ,这意味着它具有默认构造函数,并且其状态可能由
Introspector
类返回的匹配的“setter”和“getter”方法进行表征 。 默认构造函数是具有最大数量的参数的构造函数,它具有ConstructorProperties
注释。 如果没有一个构造函数具有ConstructorProperties
注释,那么将使用nullary构造函数(没有参数的构造函数)。 例如,在下面的代码段,用于在null构造Foo
类将被使用,而这两个参数的构造为Bar
类将被使用。public class Foo { public Foo() { ... } public Foo(int x) { ... } } public class Bar { public Bar() { ... } @ConstructorProperties({"x"}) public Bar(int x) { ... } @ConstructorProperties({"x", "y"}) public Bar(int x, int y) { ... } }
- 参数
-
type
- 对象的类 - 结果
- 给定类型的持久代理
- 另请参见:
-
setPersistenceDelegate(java.lang.Class<?>, java.beans.PersistenceDelegate)
,Introspector.getBeanInfo(java.lang.Class<?>)
,BeanInfo.getBeanDescriptor()
- 如果使用
-
setPersistenceDelegate
public void setPersistenceDelegate(Class<?> type, PersistenceDelegate delegate)
将指定的持久性委托与给定类型关联。- 参数
-
type
- 指定的持久性委托应用于的对象类 -
delegate
- 给定类型的实例的持久delegate
- 另请参见:
-
getPersistenceDelegate(java.lang.Class<?>)
,Introspector.getBeanInfo(java.lang.Class<?>)
,BeanInfo.getBeanDescriptor()
-
remove
public Object remove(Object oldInstance)
删除此实例的条目,返回旧条目。- 参数
-
oldInstance
- 应该删除的条目。 - 结果
- 已删除的条目。
- 另请参见:
-
get(java.lang.Object)
-
get
public Object get(Object oldInstance)
在此流创建的环境中返回oldInstance
的临时值。 持久mutatesTo
可以使用其mutatesTo
方法来确定该值是否可以被初始化以在输出处形成等效对象,或者是否必须重新实例化一个新对象。 如果流尚未看到此值,则返回null。- 参数
-
oldInstance
- 要查找的实例。 - 结果
- 对象,如果对象以前没有被看见,则为null。
-
writeStatement
public void writeStatement(Statement oldStm)
将oldStm
写入oldStm
。oldStm
应完全根据调用者环境编写,即目标和所有参数应该是正在写入的对象图的一部分。 这些表达式表示一系列“发生了什么”的表达式,它们告诉输出流如何生成像原始的对象图。该方法的实现将产生一个第二个表达式,以便在读取流时将存在的环境中表示相同的表达式。 这通过简单地通过调用目标和所有参数上的
writeObject
来构建一个新的表达式与结果。- 参数
-
oldStm
-oldStm
的表达式。
-
writeExpression
public void writeExpression(Expression oldExp)
该实现首先检查是否已经写入了具有该值的表达式。 如果不是,则使用与writeStatement
相同的过程克隆表达式,并且通过调用writeObject
将此表达式的值与克隆表达式的值进行writeObject
。- 参数
-
oldExp
-oldExp
的表达式。
-
-