首頁 >Java >java教程 >Java 9中的類別載入器有哪些變化?

Java 9中的類別載入器有哪些變化?

WBOY
WBOY轉載
2023-08-30 15:37:02717瀏覽

Java 9中的类加载器有哪些变化?

所有java程式都運行在Java虛擬機器(JVM)上。編譯後,java 類別將轉換為平台與機器無關的字節碼,並且編譯後的類別儲存為.class 檔案。每當我們嘗試使用它時,ClassLoader都會將該類別載入到記憶體中。當透過名稱引用這些類別時,這些類別就會被引入到 Java 環境中。一旦類別開始運行,類別的載入就由類別載入器完成,而 inin() 方法是啟動該類別的一種方法。

Java 9 中的類別載入器有一些小的變化:

  • #系統類別載入器 在Java 9 中不再存在,它是 的一個實例>URLClassLoader,而是一個內部類別。它是模組中類別的預設載入器
  • 擴充類別載入器已重新命名為平台類別載入器。 Java SE 平台中的所有類別都可以透過平台類別載入器可見,並且 Java 社群進程下的模組中但不屬於 Java SE 平台的類別也可以透過平台類別載入器可見。
  • 應用程式不能依賴定義哪個平台類別的類別載入器,Java SE 平台中的某些類別是由平台類別載入器定義的,而其他類別則是由引導類別載入器定義的.
  • 如果現有程式碼建立的類別載入器以引導類別載入器作為父類別載入器,那麼我們需要更改為使用平台類別載入器作為父類別載入器。
  • 平台類別載入器不是URLClassLoader的實例,而是內部類別。
  • 引導類別載入器是一個 >JVM的內建類別載入器。然而,它定義了關鍵模組的類,例如基礎。使用 -Xbootclasspath/a 部署的應用程式或使用 null 作為父級建立類別載入器的應用程式可能需要變更。
  • ul>

    範例

    public class ClassLoaderTest {
       public static void main(String args[]) {
          System.out.println("Class Loader Test");
          ClassLoaderTest test = new ClassLoaderTest();
          try {
             test.showClassLoaders();
          } catch(ClassNotFoundException cnfe) {
             System.out.println(cnfe.getMessage());
          }
       }
       public void showClassLoaders() throws ClassNotFoundException {
          System.out.println("Classloader of this class: " + <strong>ClassLoaderTest.class.</strong><strong>getClassLoader()</strong>);
          System.out.println("Classloader of Permission: " + <strong>java.sql.SQLPermission.class.</strong><strong>getClassLoader()</strong>);
          System.out.println("Classloader of LinkedList: " + <strong>java.util.LinkedList.class.</strong><strong>getClassLoader()</strong>);
          return;
       }
    }

    輸出

    <strong>Class Loader Test
    Classloader of this class: jdk.internal.loader.ClassLoaders$AppClassLoader@504bae78
    Classloader of Permission: jdk.internal.loader.ClassLoaders$PlatformClassLoader@299a06ac
    Classloader of LinkedList: null</strong>

以上是Java 9中的類別載入器有哪些變化?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除