Java ClassLoader 类



介绍

Java ClassLoader 类是一个负责加载类的对象。此类是一个抽象类。安全管理器可以使用它来指示安全域。

类声明

以下是 java.lang.ClassLoader 类的声明:

public abstract class ClassLoader
   extends Object

类构造函数

序号 构造函数及说明
1

protected ClassLoader()

这将使用 getSystemClassLoader() 方法返回的 ClassLoader 作为父类加载器创建一个新的类加载器。

2

protected ClassLoader(ClassLoader parent)

这将使用指定的父类加载器进行委托创建一个新的类加载器。

类方法

序号 方法及说明
1 void clearAssertionStatus()

此方法将此类加载器的默认断言状态设置为 false,并丢弃与类加载器关联的任何包默认值或类断言状态设置。

2

protected Class<?> defineClass(String name, byte[] b, int off, int len)

此方法将字节数组转换为 Class 类的实例。

3

protected Class<?> defineClass(String name, byte[] b, int off, int len, ProtectionDomain protectionDomain)

此方法将字节数组转换为 Class 类的实例,并带有一个可选的 ProtectionDomain

4

protected Class<?> defineClass(String name, ByteBuffer b, ProtectionDomain protectionDomain)

此方法将 ByteBuffer 转换为 Class 类的实例,并带有一个可选的 ProtectionDomain。

5

protected Package definePackage(String name, String specTitle, String specVersion, String specVendor, String implTitle, String implVersion, String implVendor, URL sealBase)

此方法在此 ClassLoader 中按名称定义一个包。

6

protected Class<?> findClass(String name)

此方法查找具有指定二进制名称的类。

7

protected String findLibrary(String libname)

此方法返回本地库的绝对路径名。

8

protected Class<?> findLoadedClass(String name)

如果此加载器已由 Java 虚拟机记录为具有该二进制名称的类的初始化加载器,则此方法返回具有给定二进制名称的类。

9

protected URL findResource(String name)

此方法查找具有给定名称的资源。

10

protected Enumeration<URL> findResources(String name)

此方法返回表示所有具有给定名称的资源的 URL 对象的枚举。

11

protected Class<?> findSystemClass(String name)

此方法查找具有指定二进制名称的类,并在必要时加载它。

12

protected Package getPackage(String name)

此方法返回已由此类加载器或其任何祖先定义的包。

13

protected Package[] getPackages()

此方法返回由此类加载器及其祖先定义的所有包。

14 ClassLoader getParent()

此方法返回用于委托的父类加载器。

15 URL getResource(String name)

此方法查找具有给定名称的资源。

16 InputStream getResourceAsStream(String name)

此方法返回用于读取指定资源的输入流。

17

Enumeration<URL> getResources(String name)

此方法查找所有具有给定名称的资源。

18

static ClassLoader getSystemClassLoader()

此方法返回用于委托的系统类加载器。

19 static URL getSystemResource(String name)

此方法从用于加载类的搜索路径中查找指定名称的资源。

20 static InputStream getSystemResourceAsStream(String name)

此方法打开用于读取指定名称的资源,该资源来自用于加载类的搜索路径。

21

static Enumeration<URL> getSystemResources(String name)

此方法从用于加载类的搜索路径中查找所有指定名称的资源。

22

Class<?> loadClass(String name)

此方法加载具有指定二进制名称的类。

23

protected Class<?> loadClass(String name, boolean resolve)

此方法加载具有指定二进制名称的类。

24

protected void resolveClass(Class<?> c)

此方法链接指定的类。

25 void setClassAssertionStatus(String className, boolean enabled)

此方法设置此类加载器中命名顶级类的所需断言状态以及其中包含的任何嵌套类。

26 void setDefaultAssertionStatus(boolean enabled)

此方法设置此类加载器的默认断言状态。

27 void setPackageAssertionStatus(String packageName, boolean enabled)

此方法设置命名包的包默认断言状态。

28

protected void setSigners(Class<?> c, Object[] signers)

此方法设置类的签名者。

继承的方法

此类继承自以下类的方法:

  • java.lang.Object

获取 ClassLoader 及其父类加载器示例

以下示例显示了 java.lang.ClassLoader.getParent() 方法的用法。在此程序中,我们检索了 ClassLoaderDemo 的类。然后使用 getClassLoader(),我们获取所需的 ClassLoader 并使用 getClass() 打印类加载器类,并使用 getParent() 方法打印父类加载器。

package com.tutorialspoint;

public class ClassLoaderDemo {

  public static void main(String[] args) throws Exception {
     
      Class cls = Class.forName("com.tutorialspoint.ClassLoaderDemo");

      // returns the ClassLoader object associated with this Class
      ClassLoader cLoader = cls.getClassLoader();
    
      System.out.println(cLoader.getClass());
    
      // returns the parent ClassLoader
      System.out.println(cLoader.getParent());
   }
} 

输出

让我们编译并运行上述程序,这将产生以下结果:

class jdk.internal.loader.ClassLoaders$AppClassLoader
jdk.internal.loader.ClassLoaders$PlatformClassLoader@4517d9a3
广告