Java ClassLoader setPackageAssertionStatus() 方法



描述

Java ClassLoader setPackageAssertionStatus() 方法設定命名包的包預設斷言狀態。包預設斷言狀態決定了未來初始化且屬於命名包或其任何“子包”的類的斷言狀態。

命名為 p 的包的子包是任何名稱以“p.”開頭的包。例如,javax.swing.textjavax.swing 的子包,java.xmljava.lang.reflect 都是 java 的子包。

宣告

以下是java.lang.ClassLoader.setPackageAssertionStatus() 方法的宣告

public void setPackageAssertionStatus(String packageName, boolean enabled)

引數

  • packageName − 這是要設定其包預設斷言狀態的包的名稱。空值表示當前的“未命名”包。

  • enabled − 如果此類載入器載入的且屬於命名包或其任何子包的類預設情況下啟用斷言,則將其設定為 true;如果預設情況下停用斷言,則將其設定為 false。

返回值

此方法不返回值。

異常

將類載入器的包級別類的斷言狀態設定為 True 的示例

以下示例演示了 java.lang.ClassLoader.setPackageAssertionStatus() 方法的用法。在這個程式中,我們檢索了 ClassLoaderDemo 的類。然後使用 getClassLoader() 獲取所需的 ClassLoader,並使用 getClass() 列印類載入器類,並使用 getParent() 方法列印父類載入器。現在,使用 setPackageAssertionStatus() 方法,我們將與類載入器關聯的包斷言狀態設定設定為 true。

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());
  
      // sets the default assertion status for this class loader
      cLoader.setPackageAssertionStatus("java.lang", true); 
   }
} 

輸出

讓我們編譯並執行上述程式,這將產生以下結果:

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

將類載入器的包級別類的斷言狀態設定為 False 的示例

以下示例演示了 java.lang.ClassLoader.setPackageAssertionStatus() 方法的用法。在這個程式中,我們檢索了 ClassLoaderDemo 的類。然後使用 getClassLoader() 獲取所需的 ClassLoader,並使用 getClass() 列印類載入器類,並使用 getParent() 方法列印父類載入器。現在,使用 setPackageAssertionStatus() 方法,我們將與類載入器關聯的包斷言狀態設定設定為 false。

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());
  
      // sets the default assertion status for this class loader
      cLoader.setPackageAssertionStatus("java.lang", false); 
   }
} 

輸出

讓我們編譯並執行上述程式,這將產生以下結果:

class jdk.internal.loader.ClassLoaders$AppClassLoader
jdk.internal.loader.ClassLoaders$PlatformClassLoader@4517d9a3
java_lang_classloader.htm
廣告