- java.lang.Object
-
- java.beans.Encoder
-
- 已知直接子类:
-
XMLEncoder
public class Encoder extends Object
Encoder
是一个类,可用于创建根据其公共API编码JavaBeans集合状态的文件或流。Encoder
与其持久性委托一起负责将对象图分解为一系列Statement
和Expression
,可用于创建它。 子类通常使用一些人类可读的形式(如Java源代码或XML)为这些表达式提供语法。- 从以下版本开始:
- 1.4
-
-
构造方法摘要
构造方法 构造器 描述 Encoder()
-
方法摘要
所有方法 实例方法 具体的方法 变量和类型 方法 描述 Object
get(Object oldInstance)
在此流创建的环境中返回oldInstance
的暂定值。ExceptionListener
getExceptionListener()
获取此流的异常处理程序。PersistenceDelegate
getPersistenceDelegate(类<?> type)
返回给定类型的持久委托。Object
remove(Object oldInstance)
删除此实例的条目,返回旧条目。void
setExceptionListener(ExceptionListener exceptionListener)
将此流的异常处理程序设置为exceptionListener
。void
setPersistenceDelegate(类<?> type, PersistenceDelegate delegate)
将指定的持久性委托与给定的类型相关联。void
writeExpression(Expression oldExp)
实现首先检查是否已写入具有此值的表达式。protected void
writeObject(Object o)
将指定的对象写入输出流。void
writeStatement(Statement oldStm)
将语句oldStm
写入流。
-
-
-
方法详细信息
-
writeObject
protected void writeObject(Object o)
将指定的对象写入输出流。 序列化表单将表示一系列表达式,其组合效果将在读取输入流时创建等效对象。 默认情况下,该对象被假定为具有nullary构造函数的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(类<?> type)
返回给定类型的持久委托。 通过按顺序应用以下规则来计算持久性委托:- 如果使用
setPersistenceDelegate(java.lang.Class<?>, java.beans.PersistenceDelegate)
方法将持久委托与给定类型相关联,则返回该委托 。 - 然后,通过由给定类型的完全限定名称和“PersistenceDelegate”后缀组成的名称来查找持久性委托。 例如,
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
注释,则将使用无效构造函数(不带参数的构造函数)。 例如,在下面的代码段,用于在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(类<?> type, PersistenceDelegate delegate)
将指定的持久性委托与给定的类型相关联。- 参数
-
type
- 指定的持久委托应用于的对象类 -
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
方法来确定是否可以初始化此值以在输出处形成等效对象,或者是否必须重新实例化新对象。 如果流尚未看到此值,则返回null。- 参数
-
oldInstance
- 要查找的实例。 - 结果
- 该对象,如果之前未看到该对象,则为null。
-
writeStatement
public void writeStatement(Statement oldStm)
将语句oldStm
写入流。oldStm
应完全根据调用者环境编写,即目标和所有参数应该是正在编写的对象图的一部分。 这些表达式表示一系列“发生了什么”的表达式,它们告诉输出流如何生成像原始对象图一样的对象图。此方法的实现将生成第二个表达式,以表示在读取流时将存在的环境中的相同表达式。 只需在目标和所有参数上调用
writeObject
并使用结果构建新表达式即可实现此目的。- 参数
-
oldStm
-oldStm
的表达式。
-
writeExpression
public void writeExpression(Expression oldExp)
实现首先检查是否已写入具有此值的表达式。 如果不是,则使用与writeStatement
相同的过程克隆表达式,并通过调用writeObject
将此表达式的值与克隆表达式的值进行writeObject
。- 参数
-
oldExp
-oldExp
的表达式。
-
-