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
廣告