public abstract class RMIClassLoaderSpi extends Object
RMIClassLoaderSpi是RMIClassLoaderSpi的服务提供商RMIClassLoader 。
特别地, RMIClassLoaderSpi实例提供了以下RMIClassLoader的静态方法的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的文档 。
RMIClassLoader
| Constructor and Description |
|---|
RMIClassLoaderSpi() |
| Modifier and Type | Method and Description |
|---|---|
abstract String |
getClassAnnotation(类<?> cl)
提供
RMIClassLoader.getClassAnnotation(Class)的
实现 。
|
abstract ClassLoader |
getClassLoader(String codebase)
提供
RMIClassLoader.getClassLoader(String)的
实现 。
|
abstract 类<?> |
loadClass(String codebase, String name, ClassLoader defaultLoader)
|
abstract 类<?> |
loadProxyClass(String codebase, String[] interfaces, ClassLoader defaultLoader)
提供
RMIClassLoader.loadProxyClass(String,String[],ClassLoader)的
实现 。
|
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 - 如果在指定位置找不到类的定义
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对于给定的接口列表)
public abstract ClassLoader getClassLoader(String codebase) throws MalformedURLException
RMIClassLoader.getClassLoader(String)的实现 。
返回从给定的代码库URL路径加载类的类加载器。
如果有一个安全管理员,其checkPermission方法将被调用一个RuntimePermission("getClassLoader")权限; 这可能会导致一个SecurityException 。 该方法的实现还可以执行进一步的安全检查,以验证呼叫上下文是否具有连接到代码库URL路径中的所有URL的权限。
codebase - 返回的类加载器从其加载类的URL(空格分隔)列表,或
null
MalformedURLException - 如果
codebase不是
null并且包含无效的URL,或者如果
codebase是
null ,并且用于标识类加载器的提供者特定URL无效
SecurityException - 如果有一个安全管理器,并且其
checkPermission方法的调用失败,或者如果调用者没有权限连接到代码库URL路径中的所有URL
public abstract String getClassAnnotation(类<?> cl)
RMIClassLoader.getClassAnnotation(Class)的实现 。
返回在编组给定类的对象时,RMI将用于注释类描述符的注释字符串(表示类定义的位置)。
cl - 获取注释的类
null
NullPointerException - 如果
cl是
null
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.