返回一个代理类,该类实现在代理类描述符中命名的接口;子类可以实现此方法,以便从流及动态代理类的描述符中读取自定义数据,允许它们使用接口和代理类的替换加载机制。
对于流中的每个唯一的代理类描述符,此方法只调用一次。
objectoutputstream
中的相应方法是 annotateproxyclass
。对于重写此方法的 objectinputstream
的给定子类,objectoutputstream
的相应子类中的 annotateproxyclass
方法必须写入由此方法读取的任何数据或objectinputstream
iis7站长之家。
objectinputstream
中此方法的默认实现返回调用 proxy.getproxyclass
的结果,同时带有在 interfaces
参数中指定接口的 class
对象的列表。每个接口名称 i
的 class
对象都是调用以下语句返回的值
class.forname(i, false, loader)
其中,loader
是执行堆栈上的第一个非 null
类加载器,如果在堆栈上不存在非 null
加载器(类加载器选项与 resolveclass
方法使用的相同),则为 null
。如果所有解析的接口都是公共的,则 loader
的这一相同值还是传递给 proxy.getproxyclass
的类加载器;如果出现非公共接口,则传递他们的类加载器(如果遇到一个以上的非公共接口类加载器,则抛出 illegalaccesserror
)。如果 proxy.getproxyclass
抛出 illegalargumentexception
,则 resolveproxyclass
将抛出包含 illegalargumentexception
的 classnotfoundexception
。
- 参数:
interfaces
- 代理类描述符中反序列化的接口名称的列表
- 返回:
- 指定接口的代理类
- 抛出:
ioexception
- 底层 inputstream
抛出任何异常
classnotfoundexception
- 如果找不到代理类或任何指定接口- 从以下版本开始:
- 1.3
- 另请参见:
objectoutputstream.annotateproxyclass(class)