返回一个代理类,该类实现在代理类描述符中命名的接口;子类可以实现此方法,以便从流及动态代理类的描述符中读取自定义数据,允许它们使用接口和代理类的替换加载机制。
对于流中的每个唯一的代理类描述符,此方法只调用一次。
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)