- java.lang.Object
-
- java.rmi.server.RMIClassLoaderSpi
-
public abstract class RMIClassLoaderSpi extends Object
RMIClassLoaderSpi是服务提供者接口RMIClassLoader。 特别是,RMIClassLoaderSpi实例提供了以下静态方法RMIClassLoader:-
RMIClassLoader.loadClass(URL,String) -
RMIClassLoader.loadClass(String,String) -
RMIClassLoader.loadClass(String,String,ClassLoader) -
RMIClassLoader.loadProxyClass(String,String[],ClassLoader) -
RMIClassLoader.getClassLoader(String) -
RMIClassLoader.getClassAnnotation(Class)
RMIClassLoader的文档。- 从以下版本开始:
- 1.4
- 另请参见:
-
RMIClassLoader
-
-
-
构造方法摘要
构造方法 构造器 描述 RMIClassLoaderSpi()
-
方法摘要
所有方法 实例方法 抽象方法 变量和类型 方法 描述 abstract StringgetClassAnnotation(类<?> cl)abstract ClassLoadergetClassLoader(String codebase)abstract 类<?>loadClass(String codebase, String name, ClassLoader defaultLoader)abstract 类<?>loadProxyClass(String codebase, String[] interfaces, ClassLoader defaultLoader)
-
-
-
方法详细信息
-
loadClass
public abstract 类<?> loadClass(String codebase, String name, ClassLoader defaultLoader) throws MalformedURLException, ClassNotFoundException
为贯彻RMIClassLoader.loadClass(URL,String),RMIClassLoader.loadClass(String,String)和RMIClassLoader.loadClass(String,String,ClassLoader)。 从代码库URL路径加载一个类,可选地使用提供的加载器。 通常,在尝试从代码库URL路径中解析类之前,提供程序实现将尝试使用给定的defaultLoader(如果已指定)解析命名类。此方法的实现必须返回具有给定名称的类或抛出异常。
- 参数
-
codebase- 要从中加载类的URL列表(以空格分隔),或null -
name- 要加载的类的名称 -
defaultLoader- 要使用的其他上下文类加载器,或null - 结果
-
表示已加载类的
类对象 - 异常
-
MalformedURLException- 如果codebase不是null并且包含无效的URL,或者codebase是null并且用于加载类的提供程序特定的URL无效 -
ClassNotFoundException- 如果在指定位置找不到类的定义
-
loadProxyClass
public abstract 类<?> loadProxyClass(String codebase, String[] interfaces, ClassLoader defaultLoader) throws MalformedURLException, ClassNotFoundException
提供RMIClassLoader.loadProxyClass(String,String[],ClassLoader)的实现。 加载动态代理类(请参阅Proxy,它使用代码库URL路径实现一组具有给定名称的接口,可选择使用提供的加载器。此方法的实现必须返回实现命名接口的代理类或抛出异常。
- 参数
-
codebase- 要加载类的URL列表(以空格分隔),或null -
interfaces- 要实现的代理类的接口的名称 -
defaultLoader- 要使用的其他上下文类加载器,或null - 结果
- 一个实现命名接口的动态代理类
- 异常
-
MalformedURLException- 如果codebase不是null且包含无效的URL,或者codebase是null且用于加载类的提供程序特定的URL无效 -
ClassNotFoundException- 如果在指定位置找不到某个命名接口的定义,或者动态代理类的创建失败(例如,如果Proxy.getProxyClass(ClassLoader,Class[])将为给定的接口列表抛出IllegalArgumentException)
-
getClassLoader
public abstract ClassLoader getClassLoader(String codebase) throws MalformedURLException
提供RMIClassLoader.getClassLoader(String)的实现。 返回一个类加载器,它从给定的代码库URL路径加载类。如果有安全经理,将以
RuntimePermission("getClassLoader")权限调用其checkPermission方法; 这可能导致SecurityException。 此方法的实现还可以执行进一步的安全检查,以验证调用上下文是否具有连接到代码库URL路径中的所有URL的权限。- 参数
-
codebase- 返回的类加载器将从中加载类的URL列表(以空格分隔),或null - 结果
- 一个类加载器,它从给定的代码库URL路径加载类
- 异常
-
MalformedURLException- 如果codebase不是null并且包含无效的URL,或者如果codebase是null并且用于标识类加载器的特定于提供者的URL无效 -
SecurityException- 如果存在安全管理器并且其checkPermission方法的调用失败,或者调用者没有权限连接到代码库URL路径中的所有URL
-
getClassAnnotation
public abstract String getClassAnnotation(类<?> cl)
提供RMIClassLoader.getClassAnnotation(Class)的实现。 返回注释字符串(表示类定义的位置),RMI将在编组给定类的对象时用于注释类描述符。- 参数
-
cl- 获取注释的类 - 结果
-
在被编组时用于注释给定类的字符串,或
null - 异常
-
NullPointerException- 如果cl是null
-
-