java.lang.Object
java.rmi.server.RMIClassLoaderSpi
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
- 参见:
-
构造方法总结
构造方法 -
方法总结
修饰符和类型方法描述abstract StringgetClassAnnotation(Class<?> cl) abstract ClassLoadergetClassLoader(String codebase) abstract Class<?>loadClass(String codebase, String name, ClassLoader defaultLoader) abstract Class<?>loadProxyClass(String codebase, String[] interfaces, ClassLoader defaultLoader)
-
构造方法详细信息
-
RMIClassLoaderSpi
public RMIClassLoaderSpi()子类调用的构造方法。
-
-
方法详情
-
loadClass
public abstract Class <?> loadClass(String codebase, String name, ClassLoader defaultLoader) throws MalformedURLException , ClassNotFoundException 提供RMIClassLoader.loadClass(URL,String)、RMIClassLoader.loadClass(String,String)和RMIClassLoader.loadClass(String,String,ClassLoader)的实现。从代码库 URL 路径加载一个类,可以选择使用提供的加载器。通常,提供者实现将尝试使用给定的defaultLoader(如果已指定)解析命名类,然后再尝试从代码库 URL 路径解析该类。此方法的实现必须返回具有给定名称的类或抛出异常。
- 参数:
codebase- 从中加载类的 URL 列表(以空格分隔),或nullname- 要加载的类的名称defaultLoader- 要使用的附加上下文类加载器,或null- 返回:
-
代表加载类的
Class对象 - 抛出:
MalformedURLException- 如果codebase是非null并且包含无效的 URL,或者如果codebase是null并且用于加载类的特定于提供者的 URL 无效ClassNotFoundException- 如果在指定位置找不到该类的定义
-
loadProxyClass
public abstract Class <?> loadProxyClass(String codebase, String [] interfaces, ClassLoader defaultLoader) throws MalformedURLException , ClassNotFoundException 提供RMIClassLoader.loadProxyClass(String,String[],ClassLoader)的实现。加载一个动态代理类(参见Proxy,它实现了一组具有来自代码库 URL 路径的给定名称的接口,可选择使用提供的加载器。此方法的实现必须返回一个实现命名接口的代理类或抛出异常。
- 参数:
codebase- 从中加载类的 URL 列表(以空格分隔),或nullinterfaces- 代理类要实现的接口名称defaultLoader- 要使用的附加上下文类加载器,或null- 返回:
- 实现命名接口的动态代理类
- 抛出:
MalformedURLException- 如果codebase是非null并且包含无效的 URL,或者如果codebase是null并且用于加载类的特定于提供者的 URL 无效ClassNotFoundException- 如果在指定位置找不到指定接口之一的定义,或者创建动态代理类失败(例如Proxy.getProxyClass(ClassLoader,Class[])将为给定接口列表抛出IllegalArgumentException)
-
getClassLoader
提供RMIClassLoader.getClassLoader(String)的实现。返回一个类加载器,它从给定的代码库 URL 路径加载类。如果有安全管理器,它的
checkPermission方法将以RuntimePermission("getClassLoader")权限被调用;这可能会导致SecurityException。此方法的实现还可以执行进一步的安全检查,以验证调用上下文是否有权连接到代码库 URL 路径中的所有 URL。- 参数:
codebase- 返回的类加载器将从中加载类的 URL 列表(以空格分隔),或null- 返回:
- 从给定的代码库 URL 路径加载类的类加载器
- 抛出:
MalformedURLException- 如果codebase是非null并且包含无效的 URL,或者如果codebase是null并且用于标识类加载器的特定于提供者的 URL 无效SecurityException- 如果存在安全管理器并且调用其checkPermission方法失败,或者如果调用者无权连接到代码库 URL 路径中的所有 URL
-
getClassAnnotation
提供RMIClassLoader.getClassAnnotation(Class)的实现。返回注释字符串(表示类定义的位置),RMI 在编组给定类的对象时将使用它来注释类描述符。- 参数:
cl- 获取注解的类- 返回:
-
一个字符串,用于在编组时注释给定的类,或
null - 抛出:
NullPointerException- 如果cl是null
-