Google is committed to advancing racial equity for Black communities. See how.
Added in API level 1

SecureClassLoader

open class SecureClassLoader : ClassLoader
kotlin.Any
   ↳ java.lang.ClassLoader
   ↳ java.security.SecureClassLoader

This class extends ClassLoader with additional support for defining classes with an associated code source and permissions which are retrieved by the system policy by default.

Summary

Protected constructors

<init>(parent: ClassLoader!)

Creates a new SecureClassLoader using the specified parent class loader for delegation.

Creates a new SecureClassLoader using the default parent class loader for delegation.

Protected methods

Class<*>!
defineClass(name: String!, b: ByteArray!, off: Int, len: Int, cs: CodeSource!)

Converts an array of bytes into an instance of class Class, with an optional CodeSource.

Class<*>!
defineClass(name: String!, b: ByteBuffer!, cs: CodeSource!)

Converts a ByteBuffer into an instance of class Class, with an optional CodeSource.

open PermissionCollection!
getPermissions(codesource: CodeSource!)

Returns the permissions for the given CodeSource object.

Inherited functions

Protected constructors

<init>

Added in API level 1
protected SecureClassLoader(parent: ClassLoader!)

Creates a new SecureClassLoader using the specified parent class loader for delegation.

If there is a security manager, this method first calls the security manager's checkCreateClassLoader method to ensure creation of a class loader is allowed.

Parameters
parent ClassLoader!: the parent ClassLoader
Exceptions
java.lang.SecurityException if a security manager exists and its checkCreateClassLoader method doesn't allow creation of a class loader.

<init>

Added in API level 1
protected SecureClassLoader()

Creates a new SecureClassLoader using the default parent class loader for delegation.

If there is a security manager, this method first calls the security manager's checkCreateClassLoader method to ensure creation of a class loader is allowed.

Exceptions
java.lang.SecurityException if a security manager exists and its checkCreateClassLoader method doesn't allow creation of a class loader.

Protected methods

defineClass

Added in API level 1
protected fun defineClass(
    name: String!,
    b: ByteArray!,
    off: Int,
    len: Int,
    cs: CodeSource!
): Class<*>!

Converts an array of bytes into an instance of class Class, with an optional CodeSource. Before the class can be used it must be resolved.

If a non-null CodeSource is supplied a ProtectionDomain is constructed and associated with the class being defined.

Parameters
name String!: the expected name of the class, or null if not known, using '.' and not '/' as the separator and without a trailing ".class" suffix.
b ByteArray!: the bytes that make up the class data. The bytes in positions off through off+len-1 should have the format of a valid class file as defined by The Java™ Virtual Machine Specification.
off Int: the start offset in b of the class data
len Int: the length of the class data
cs CodeSource!: the associated CodeSource, or null if none
Return
Class<*>! the Class object created from the data, and optional CodeSource.
Exceptions
java.lang.ClassFormatError if the data did not contain a valid class
java.lang.IndexOutOfBoundsException if either off or len is negative, or if off+len is greater than b.length.
java.lang.SecurityException if an attempt is made to add this class to a package that contains classes that were signed by a different set of certificates than this class, or if the class name begins with "java.".

defineClass

Added in API level 1
protected fun defineClass(
    name: String!,
    b: ByteBuffer!,
    cs: CodeSource!
): Class<*>!

Converts a ByteBuffer into an instance of class Class, with an optional CodeSource. Before the class can be used it must be resolved.

If a non-null CodeSource is supplied a ProtectionDomain is constructed and associated with the class being defined.

Parameters
name String!: the expected name of the class, or null if not known, using '.' and not '/' as the separator and without a trailing ".class" suffix.
b ByteBuffer!: the bytes that make up the class data. The bytes from positions b.position() through b.position() + b.limit() -1 should have the format of a valid class file as defined by The Java™ Virtual Machine Specification.
cs CodeSource!: the associated CodeSource, or null if none
Return
Class<*>! the Class object created from the data, and optional CodeSource.
Exceptions
java.lang.ClassFormatError if the data did not contain a valid class
java.lang.SecurityException if an attempt is made to add this class to a package that contains classes that were signed by a different set of certificates than this class, or if the class name begins with "java.".

getPermissions

Added in API level 1
protected open fun getPermissions(codesource: CodeSource!): PermissionCollection!

Returns the permissions for the given CodeSource object.

This method is invoked by the defineClass method which takes a CodeSource as an argument when it is constructing the ProtectionDomain for the class being defined.

Parameters
codesource CodeSource!: the codesource.
Return
PermissionCollection! the permissions granted to the codesource.