java.lang.Object
java.lang.ClassLoader
java.security.SecureClassLoader
- 已知子类:
URLClassLoader
此类扩展了
ClassLoader
,额外支持定义具有关联代码源的类和默认情况下由系统策略检索的权限。
- 自从:
- 1.2
-
构造方法总结
构造方法修饰符构造方法描述protected
使用默认的父类加载器创建一个新的SecureClassLoader
进行委托。protected
SecureClassLoader
(ClassLoader parent) 使用指定的父类加载器创建一个新的SecureClassLoader
进行委托。protected
SecureClassLoader
(String name, ClassLoader parent) 创建指定名称的新SecureClassLoader
,并使用指定的父类加载器进行委托。 -
方法总结
修饰符和类型方法描述protected final Class<?>
defineClass
(String name, byte[] b, int off, int len, CodeSource cs) 将字节数组转换为类Class
的实例,带有可选的 CodeSource。protected final Class<?>
defineClass
(String name, ByteBuffer b, CodeSource cs) 将ByteBuffer
转换为类Class
的实例,带有可选的 CodeSource。protected PermissionCollection
getPermissions
(CodeSource codesource) 返回给定 CodeSource 对象的权限。在类 java.lang.ClassLoader 中声明的方法
clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findClass, findClass, findLibrary, findLoadedClass, findResource, findResource, findResources, findSystemClass, getClassLoadingLock, getDefinedPackage, getDefinedPackages, getName, getPackage, getPackages, getParent, getPlatformClassLoader, getResource, getResourceAsStream, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, getUnnamedModule, isRegisteredAsParallelCapable, loadClass, loadClass, registerAsParallelCapable, resolveClass, resources, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSigners
-
构造方法详细信息
-
SecureClassLoader
使用指定的父类加载器创建一个新的SecureClassLoader
进行委托。如果有安全管理器,此方法首先调用安全管理器的
checkCreateClassLoader
方法以确保允许创建类加载器。- 参数:
parent
- 父类加载器- 抛出:
SecurityException
- 如果安全管理器存在并且其checkCreateClassLoader
方法不允许创建类加载器。- 参见:
-
SecureClassLoader
protected SecureClassLoader()使用默认的父类加载器创建一个新的SecureClassLoader
进行委托。如果有安全管理器,此方法首先调用安全管理器的
checkCreateClassLoader
方法以确保允许创建类加载器。- 抛出:
SecurityException
- 如果安全管理器存在并且其checkCreateClassLoader
方法不允许创建类加载器。- 参见:
-
SecureClassLoader
创建指定名称的新SecureClassLoader
,并使用指定的父类加载器进行委托。- 参数:
name
- 类加载器名称;或者null
如果没有命名parent
- 父类加载器- 抛出:
IllegalArgumentException
- 如果给定名称为空。SecurityException
- 如果安全管理器存在且其SecurityManager.checkCreateClassLoader()
方法不允许创建类加载器。- 自从:
- 9
-
-
方法详情
-
defineClass
将字节数组转换为类Class
的实例,带有可选的 CodeSource。在可以使用该类之前,必须对其进行解析。如果提供了非空 CodeSource,则构造 ProtectionDomain 并将其与正在定义的类相关联。
- 参数:
name
- 类的预期名称,或者null
如果不知道,使用“.”而不是“/”作为分隔符并且没有尾随“.class”后缀。b
- 构成类数据的字节。位置off
到off+len-1
中的字节应具有由定义的有效类文件的格式Java 虚拟机规范.off
- 类数据的b
中的起始偏移量len
- 类数据的长度cs
- 关联的代码源,如果没有则为null
- 返回:
-
从数据创建的
Class
对象,以及可选的 CodeSource。 - 抛出:
ClassFormatError
- 如果数据不包含有效类IndexOutOfBoundsException
- 如果off
或len
为负,或者如果off+len
大于b.length
。SecurityException
- 如果尝试将此类添加到包含由与此类不同的一组证书签名的类的包中,或者如果类名以“java.”开头。
-
defineClass
将ByteBuffer
转换为类Class
的实例,带有可选的 CodeSource。在可以使用该类之前,必须对其进行解析。如果提供了非空 CodeSource,则构造 ProtectionDomain 并将其与正在定义的类相关联。
- 参数:
name
- 类的预期名称,或者null
如果不知道,使用“.”而不是“/”作为分隔符并且没有尾随“.class”后缀。b
- 构成类数据的字节。从位置b.position()
到b.position() + b.limit() -1
的字节应该具有由定义的有效类文件的格式Java 虚拟机规范.cs
- 关联的代码源,如果没有则为null
- 返回:
-
从数据创建的
Class
对象,以及可选的 CodeSource。 - 抛出:
ClassFormatError
- 如果数据不包含有效类SecurityException
- 如果尝试将此类添加到包含由与此类不同的一组证书签名的类的包中,或者如果类名以“java.”开头。- 自从:
- 1.5
-
getPermissions
返回给定 CodeSource 对象的权限。此方法由 defineClass 方法调用,该方法在为正在定义的类构造 ProtectionDomain 时将 CodeSource 作为参数。
- 参数:
codesource
- 代码源。- 返回:
- 授予代码源的权限。
-