モジュール java.base
パッケージ java.lang

クラスClassLoader

  • 直系の既知のサブクラス:
    SecureClassLoader


    public abstract class ClassLoader
    extends Object
    クラス・ローダーは、クラスのロードを担当するオブジェクトです。 ClassLoaderクラスは抽象クラスです。 クラスのバイナリ名を指定すると、クラス・ローダーはクラスの定義を構成するデータを見つけるか生成します。 一般的な方法としては、名前をファイル名に変換して、ファイル・システムからその名前のクラス・ファイルを読み込みます。

    すべてのClassオブジェクトには、それを定義したClassLoaderへのreferenceが含まれています。

    配列クラスのClassオブジェクトは、クラス・ローダーによっては作成されず、Java Runtimeの要求に応じて自動的に作成されます。 配列クラスのクラス・ローダー(Class.getClassLoader()から返される)は、その要素の型のクラス・ローダーと同じになります。要素の型がプリミティブ型の場合、配列クラスはクラス・ローダーを持ちません。

    アプリケーションは、Java仮想マシンが動的にクラスをロードするように拡張するために、ClassLoaderのサブクラスを実装します。

    クラス・ローダーは一般的に、セキュリティ・マネージャがセキュリティ・ドメインを示すために使われます。

    クラスをロードすることに加えて、クラス・ローダーはリソースの特定も担当します。 リソースとは、'/'という抽象パス名で識別されるデータです。 リソースは通常、アプリケーションまたはライブラリにパッケージ化されているため、アプリケーションまたはライブラリ内のコードでリソースを見つけることができます。 場合によっては、リソースが他のライブラリに配置されるように含まれています。

    ClassLoaderクラスは、委譲モデルを使ってクラスとリソースを探します。 ClassLoaderの各インスタンスは、関連する親クラス・ローダーを持ちます。 ClassLoaderインスタンスは、クラスまたはリソースの検索をリクエストされると、そのクラスまたはリソース自体の検索を試みる前に、そのクラスまたはリソースの検索を親クラス・ローダーに委譲します。

    クラスの同時ロードをサポートするクラス・ローダーは、並列対応クラス・ローダーと呼ばれ、ClassLoader.registerAsParallelCapableメソッドを呼び出すことによってクラス初期化時に登録する必要があります。 ClassLoaderクラスはデフォルトで並行可能として登録されます。 ただしそのサブクラスについては、並行可能な場合には自身を登録する必要があります。 委譲モデルが厳密に階層的でない環境では、クラス・ローダーは並列対応が可能でなければなりません。そうしないと、クラス・ローディング・プロセス(loadClassメソッドを参照してください)中にローダー・ロックが保持されるため、クラス・ローディングによってデッドロックが発生する可能性があります。

    ランタイム・ビルト・イン・クラス・ローダー

    Javaランタイムには、次の組み込みクラス・ローダーがあります:
    • ブートストラップ・クラス・ローダー。 仮想マシンの組み込みクラス・ローダーで、通常はnullで表され、親はありません。

    • 「プラットフォーム・クラス・ローダー」 すべての「プラットフォーム・クラス」は、ClassLoaderインスタンスの親として使用できるプラットフォーム・クラス・ローダーに表示されます。 プラットフォーム・クラスには、Java SEプラットフォームAPI、その実装クラス、およびプラットフォーム・クラス・ローダーまたはその祖先によって定義されたJDK固有の実行時クラスが含まれます。

      プラットフォーム・クラス・ローダーに定義されたモジュールのアップグレード/オーバーライドを可能にするために、アップグレードされたモジュールが定義されたモジュールをプラットフォーム・クラス・ローダーとその祖先以外のクラス・ローダーに読み込む場合、プラットフォーム・クラス・ローダーは他のクラス・ローダーに委譲する必要があります。アプリケーション・クラス・ローダーなどがあります。 言い換えれば、プラットフォーム・クラス・ローダーとその祖先以外のクラス・ローダーに定義された名前付きモジュールのクラスは、プラットフォーム・クラス・ローダーに可視である可能性があります。

    • 「システム・クラス・ローダー」 「アプリケーション・クラス・ローダー」とも呼ばれ、プラットフォーム・クラス・ローダーとは異なります。 システム・クラス・ローダーは、通常、アプリケーション・クラス・パス、モジュール・パス、およびJDK固有のツールでクラスを定義するために使用されます。 プラットフォーム・クラス・ローダーは、すべてのプラットフォーム・クラスが可視であるシステム・クラス・ローダーの親または祖先です。

    通常、Java仮想マシンは、プラットフォームに依存しない方法でローカル・ファイル・システムからクラスをロードします。 ただし、ファイルから作成できないクラスもあります。このようなクラスは、ネットワークなどのほかのソースから作成したり、アプリケーションが構築したりします。 メソッドdefineClassは、バイトの配列をクラスClassのインスタンスに変換します。 この新たに定義されたクラスのインスタンスは、Class.newInstanceを使用して作成できます。

    クラス・ローダーで作成したオブジェクトのメソッドとコンストラクタは、ほかのクラスを参照できます。 参照されるclass(es)を決定するために、Java仮想マシンは、クラスを最初に作成したクラス・ローダーのloadClassメソッドを呼び出します。

    たとえば、アプリケーションはネットワーク・クラス・ローダーを作成して、サーバーからクラス・ファイルをダウンロードできます。 コードは次のようになります。

       ClassLoader loader = new NetworkClassLoader(host, port);
       Object main = loader.loadClass("Main", true).newInstance();
            . . .
     

    ネットワーク・クラス・ローダー・サブクラスは、ネットワークからクラスをロードするために、メソッドfindClassloadClassDataを定義する必要があります。 クラスを構成するバイトをダウンロードしたら、メソッドdefineClassを使用してクラス・インスタンスを作成する必要があります。 実装の例を次に示します。

         class NetworkClassLoader extends ClassLoader {
             String host;
             int port;
    
             public Class findClass(String name) {
                 byte[] b = loadClassData(name);
                 return defineClass(name, b, 0, b.length);
             }
    
             private byte[] loadClassData(String name) {
                 // load the class data from the connection
                  . . .
             }
         }
     

    バイナリ名

    ClassLoaderのメソッドのStringパラメータとして指定するクラス名はすべて、『Java™言語仕様』で規定されたバイナリ名である必要があります。

    次に、有効なクラス名の例を示します。

       "java.lang.String"
       "javax.swing.JSpinner$DefaultEditor"
       "java.security.KeyStore$Builder$FileBuilder$1"
       "java.net.URLClassLoader$3$1"
     

    ClassLoaderのメソッドへのStringパラメータとして指定されたパッケージ名は、空の文字列(名前のないパッケージを示す)または「Java™言語仕様」で定義された完全修飾名でなければなりません。

    導入されたバージョン:
    1.0
    関連項目:
    resolveClass(Class)
    Java™言語仕様:
    6.7 完全修飾名、13.1バイナリ形式
    • コンストラクタのサマリー

      コンストラクタ 
      修飾子 コンストラクタ 説明
      protected ClassLoader​()
      getSystemClassLoader()メソッドによって返されたClassLoaderを親クラス・ローダーとして使用して、新しいクラス・ローダーを作成します。
      protected ClassLoader​(ClassLoader parent)
      指定された親クラス・ローダーを使って、委譲のために新しいクラス・ローダーを作成します。
      protected ClassLoader​(String name, ClassLoader parent)
      指定された名前の新しいクラス・ローダーを作成し、指定された親クラス・ローダーを委譲のために使用します。
    • コンストラクタの詳細

      • ClassLoader

        protected ClassLoader​(String name,
                              ClassLoader parent)
        指定された名前の新しいクラス・ローダーを作成し、指定された親クラス・ローダーを委譲のために使用します。
        APIの注:
        親がnull (ブートストラップ・クラス・ローダー用)として指定されている場合、すべてのプラットフォーム・クラスが可視であるという保証はありません。
        パラメータ:
        name - クラス・ローダー名;名前が付けられていない場合はnull
        parent - 親クラス・ローダー
        例外:
        IllegalArgumentException - 指定された名前が空の場合。
        SecurityException - セキュリティ・マネージャが存在し、そのSecurityManager.checkCreateClassLoader()メソッドが新しいクラス・ローダーの作成を許可しない場合。
        導入されたバージョン:
        9
      • ClassLoader

        protected ClassLoader​(ClassLoader parent)
        指定された親クラス・ローダーを使って、委譲のために新しいクラス・ローダーを作成します。

        セキュリティ・マネージャが存在する場合、そのcheckCreateClassLoaderメソッドが呼び出されます。 これはセキュリティ例外となる場合があります。

        APIの注:
        親がnull (ブートストラップ・クラス・ローダー用)として指定されている場合、すべてのプラットフォーム・クラスが可視であるという保証はありません。
        パラメータ:
        parent - 親クラス・ローダー
        例外:
        SecurityException - セキュリティ・マネージャが存在し、そのcheckCreateClassLoaderメソッドが新しいクラス・ローダーの作成を許可しない場合
        導入されたバージョン:
        1.2
      • ClassLoader

        protected ClassLoader​()
        getSystemClassLoader()メソッドによって返されたClassLoaderを親クラス・ローダーとして使用して、新しいクラス・ローダーを作成します。

        セキュリティ・マネージャが存在する場合、そのcheckCreateClassLoaderメソッドが呼び出されます。 これはセキュリティ例外となる場合があります。

        例外:
        SecurityException - セキュリティ・マネージャが存在し、そのcheckCreateClassLoaderメソッドが新しいクラス・ローダーの作成を許可しない場合
    • メソッドの詳細

      • getName

        public String getName​()
        このクラス・ローダーの名前が返されない場合は、このクラス・ローダーの名前またはnullを返します。
        APIの注:
        このメソッドは、互換性のために最終的なものではありません。 このメソッドがオーバーライドされている場合、このメソッドは、このクラス・ローダーがインスタンス化されたときに指定されたものと同じ名前を返す必要があります。
        戻り値:
        このクラス・ローダーの名前。このクラス・ローダーが指定されていない場合はnull
        導入されたバージョン:
        9
      • loadClass

        public Class<?> loadClass​(String name)
                           throws ClassNotFoundException
        指定されたバイナリ名を持つクラスをロードします。 このメソッドでのクラスの検索方法は、loadClass(String, boolean)メソッドの場合と同じです。 Java仮想マシンがこのメソッドを呼び出して、クラス参照を解決します。 このメソッドを呼び出すことは、loadClass(name, false)を呼び出すことと同じです。
        パラメータ:
        name - クラスのバイナリ名
        戻り値:
        結果として得られるClassオブジェクト
        例外:
        ClassNotFoundException - クラスが見つからなかった場合
      • loadClass

        protected Class<?> loadClass​(String name,
                                     boolean resolve)
                              throws ClassNotFoundException
        指定されたバイナリ名を持つクラスをロードします。 このメソッドのデフォルト実装では、次の順序でクラスを検索します。
        1. クラスがすでにロードされていないかチェックするためにfindLoadedClass(String)を呼び出す。

        2. 親クラス・ローダーでloadClassメソッドを呼び出します。 親がnullの場合、代わりに仮想マシンに組み込まれたクラス・ローダーが使用されます。

        3. findClass(String)メソッドを呼び出してクラスを探す。

        上記の手順でクラスが見つかった場合、resolveフラグがtrueのときには、このメソッドは見つかったClassオブジェクトに対してresolveClass(Class)メソッドを呼び出します。

        ClassLoaderのサブクラスでは、このメソッドではなくfindClass(String)をオーバーライドすることをお薦めします。

        オーバーライドされていない限り、このメソッドはクラス・ロード処理全体の中でgetClassLoadingLockメソッドの結果と同期します。

        パラメータ:
        name - クラスのバイナリ名
        resolve - trueの場合は、クラスを解決する
        戻り値:
        結果として得られるClassオブジェクト
        例外:
        ClassNotFoundException - クラスが見つからなかった場合
      • getClassLoadingLock

        protected Object getClassLoadingLock​(String className)
        クラス・ロード操作用のロック・オブジェクトを返します。 下位互換性のため、このメソッドのデフォルト実装は次のように動作します。 このClassLoaderオブジェクトが並行可能として登録されている場合、このメソッドは、指定されたクラス名に関連付けられた専用オブジェクトを返します。 それ以外の場合、メソッドはこのClassLoaderオブジェクトを返します。
        パラメータ:
        className - ロードするクラスの名前
        戻り値:
        クラス・ロード処理用のロック
        例外:
        NullPointerException - 並行可能として登録されていて、classNameがnullの場合
        導入されたバージョン:
        1.7
        関連項目:
        loadClass(String, boolean)
      • findClass

        protected Class<?> findClass​(String name)
                              throws ClassNotFoundException
        指定されたバイナリ名を持つクラスを探します。 このメソッドは、クラスをロードするための委譲モデルに続くクラス・ローダー実装によってオーバーライドされ、リクエストされたクラスの親クラス・ローダーをチェックした後にloadClassメソッドによって呼び出されます。
        実装要件:
        デフォルトの実装では、ClassNotFoundExceptionがスローされます。
        パラメータ:
        name - クラスのバイナリ名
        戻り値:
        結果として得られるClassオブジェクト
        例外:
        ClassNotFoundException - クラスが見つからなかった場合
        導入されたバージョン:
        1.2
      • findClass

        protected Class<?> findClass​(String moduleName,
                                     String name)
        このクラス・ローダーに定義されたモジュール内の指定された「バイナリ名」を持つクラスを検索します。 モジュールからのロードをサポートするクラス・ローダー実装は、このメソッドをオーバーライドする必要があります。
        APIの注:
        このメソッドは、クラスが見つからない場合はClassNotFoundExceptionをスローするのではなく、nullを返します。
        実装要件:
        moduleNamenullのとき、findClass(String)を呼び出すことによって、デフォルトの実装がクラスを見つけようとします。 そうでなければ、nullを返します。
        パラメータ:
        moduleName - モジュール名。またはnullを使用して、このクラス・ローダーの「名前のないモジュール」内のクラスを見つけます
        name - クラスのバイナリ名
        戻り値:
        結果のClassオブジェクト、またはクラスが見つからなかった場合はnullオブジェクト。
        導入されたバージョン:
        9
      • defineClass

        @Deprecated(since="1.1")
        protected final Class<?> defineClass​(byte[] b,
                                             int off,
                                             int len)
                                      throws ClassFormatError
        非推奨。 defineClass(String, byte[], int, int)に置き換えられています。
        バイトの配列をClassクラスのインスタンスに変換します。 最初にClassを解決してからでなければ、それを使用することはできません。 このメソッドは非推奨です。バイナリ名を最初の引数として取るバージョンの方が安全であるため、そのバージョンを使用するようにしてください。
        パラメータ:
        b - クラス・データを構成するバイト。 offからoff+len-1までの位置にあるbyteは、『Java™仮想マシン仕様』で定義される有効なクラス・ファイルの形式を持つ。
        off - クラス・データのb内での開始オフセット
        len - クラス・データの長さ
        戻り値:
        指定されたクラス・データから作成されたClassオブジェクト
        例外:
        ClassFormatError - データが有効なクラスを含まなかった場合
        IndexOutOfBoundsException - offまたはlenが負の場合、またはoff+lenb.lengthより大きい場合
        SecurityException - このクラスとは異なる一連の証明書で署名されたクラスを含むパッケージにこのクラスを追加しようとした場合、またはjava.で始まる完全指定名を持つパッケージ内でクラスを定義しようとした場合。
        関連項目:
        loadClass(String, boolean), resolveClass(Class)
      • defineClass

        protected final Class<?> defineClass​(String name,
                                             byte[] b,
                                             int off,
                                             int len)
                                      throws ClassFormatError
        バイトの配列をClassクラスのインスタンスに変換します。 最初にClassを解決してからでなければ、それを使用することはできません。

        このメソッドは、新しく定義されたクラスにデフォルトのProtectionDomainを割り当てます。 ProtectionDomainには、Policy.getPolicy().getPermissions(new CodeSource(null, null))が呼び出されたときに返される同じセットのアクセス権が効果的に与えられます。 デフォルトの保護ドメインは、defineClassの最初の呼び出しで作成され、後続の呼び出しで再使用されます。

        特定のProtectionDomainをクラスに割り当てるには、引数の1つとしてProtectionDomainを取るdefineClassメソッドを使用します。

        このメソッドは、Class (そのようなパッケージがこのクラス・ローダーでまだ定義されていない場合)のパッケージに対応するこのクラス・ローダー内のパッケージを定義します。 定義されたパッケージの名前は、バイト配列bで指定されたクラスの「バイナリ名」から派生します。 定義されたパッケージのその他のプロパティは、Packageで指定されたものです。

        パラメータ:
        name - クラスの予想されるバイナリ名。不明な場合はnull
        b - クラス・データを構成するバイト。 offからoff+len-1までの位置にあるbyteは、『Java™仮想マシン仕様』で定義される有効なクラス・ファイルの形式を持つ。
        off - クラス・データのb内での開始オフセット
        len - クラス・データの長さ
        戻り値:
        指定されたクラス・データから作成されたClassオブジェクト。
        例外:
        ClassFormatError - データが有効なクラスを含まなかった場合
        IndexOutOfBoundsException - offまたはlenが負の場合、またはoff+lenb.lengthより大きい場合
        SecurityException - このクラス(未署名)とは異なる証明書セットを使って署名されたクラスを含むパッケージに、このクラスを追加しようとした場合、またはnamejava.で始まる場合。
        導入されたバージョン:
        1.1
        関連項目:
        loadClass(String, boolean), resolveClass(Class), CodeSource, SecureClassLoader
      • defineClass

        protected final Class<?> defineClass​(String name,
                                             byte[] b,
                                             int off,
                                             int len,
                                             ProtectionDomain protectionDomain)
                                      throws ClassFormatError
        指定されたProtectionDomainを使用して、バイトの配列をクラスClassのインスタンスに変換します。

        指定されたProtectionDomainnullの場合、defineClass(String, byte[], int, int)のドキュメントで指定されているように、デフォルトの保護ドメインがクラスに割り当てられます。 最初にクラスを解決してからでなければ、クラスを使用することはできません。

        パッケージで定義される最初のクラスにより、そのパッケージ内で続いて定義されたすべてのクラスに必要な、証明書の正確なセットが決まります。 クラスの証明書セットは、クラスのProtectionDomain内のCodeSourceから取得されます。 そのパッケージに追加されたクラスには同一の証明書のセットが含まれている必要があり、含まれていない場合はSecurityExceptionがスローされます。 namenullの場合、この判別は実行されません。 必ず、定義するクラスのバイナリ名をバイトとともに渡すようにしてください。 このようにして渡すと、定義するクラスは実際に考えたとおりのクラスになります。

        指定されたnameが"java."で始まる場合は、「プラットフォーム・クラス・ローダー」またはその祖先でのみ定義できます。それ以外の場合はSecurityExceptionがスローされます。 namenullでない場合は、バイト配列bで指定されたクラスの「バイナリ名」と等しくなければなりません。それ以外の場合はNoClassDefFoundErrorがスローされます。

        このメソッドは、Class (そのようなパッケージがこのクラス・ローダーでまだ定義されていない場合)のパッケージに対応するこのクラス・ローダー内のパッケージを定義します。 定義されたパッケージの名前は、バイト配列bで指定されたクラスの「バイナリ名」から派生します。 定義されたパッケージのその他のプロパティは、Packageで指定されたものです。

        パラメータ:
        name - クラスの予想されるバイナリ名。不明な場合はnull
        b - クラス・データを構成するバイト。 offからoff+len-1までの位置にあるbyteは、『Java™仮想マシン仕様』で定義される有効なクラス・ファイルの形式を持つ。
        off - クラス・データのb内での開始オフセット
        len - クラス・データの長さ
        protectionDomain - クラスのProtectionDomain
        戻り値:
        データから作成されたClassオブジェクトとProtectionDomain
        例外:
        ClassFormatError - データが有効なクラスを含まなかった場合
        NoClassDefFoundError - namenullでなく、bで指定されたクラスの「バイナリ名」と等しくない場合
        IndexOutOfBoundsException - offまたはlenが負の場合、またはoff+lenb.lengthより大きい場合
        SecurityException - このクラスを、このクラスとは異なる証明書セットで署名されたクラスを含むパッケージに追加しようとした場合、またはnameが"java."で始まり、このクラス・ローダーがプラットフォーム・クラス・ローダーまたはその祖先でない場合。
      • defineClass

        protected final Class<?> defineClass​(String name,
                                             ByteBuffer b,
                                             ProtectionDomain protectionDomain)
                                      throws ClassFormatError
        指定されたProtectionDomainを使用して、ByteBufferをクラスClassのインスタンスに変換します。 指定されたProtectionDomainnullの場合、defineClass(String, byte[], int, int)のドキュメントで指定されているように、デフォルトの保護ドメインがクラスに割り当てられます。 最初にクラスを解決してからでなければ、クラスを使用することはできません。

        パッケージの証明書セット、クラス名の制限、およびクラスの定義済みパッケージを決定するパッケージで定義されたファースト・クラスに関するルールは、defineClass(String, byte[], int, int, ProtectionDomain)のドキュメントで指定されているルールと同じです。

        このメソッドをcl.defineClass(name, bBuffer, pd)の形式で呼び出すと、次の文とまったく同じ結果が得られます

        ...
        byte[] temp = new byte[bBuffer.remaining()];
        bBuffer.get(temp);
        return cl.defineClass(name, temp, 0, temp.length, pd);

        パラメータ:
        name - クラスの予想されるバイナリ名。不明な場合はnull
        b - クラス・データを構成するバイト。 b.position()からb.position()+b.limit() -1までの位置にあるbyteは、『Java™仮想マシン仕様』で定義される有効なクラス・ファイルの形式を持つ。
        protectionDomain - クラスのProtectionDomain、またはnull
        戻り値:
        データから作成されたClassオブジェクトとProtectionDomain
        例外:
        ClassFormatError - データが有効なクラスを含まなかった場合。
        NoClassDefFoundError - namenullでなく、bで指定されたクラスの「バイナリ名」と等しくない場合
        SecurityException - このクラスとは異なる証明書セットを使って署名されたクラスを含むパッケージに、このクラスを追加しようとする場合、またはnamejava.で始まる場合。
        導入されたバージョン:
        1.5
        関連項目:
        defineClass(String, byte[], int, int, ProtectionDomain)
      • resolveClass

        protected final void resolveClass​(Class<?> c)
        指定されたクラスをリンクします。 クラス・ローダーはこのメソッドを使って、クラスをリンクします。 cクラスがすでにリンクされている場合、このメソッドは単に復帰します。 そうでない場合、『Java™言語仕様』のExecutionの章で説明しているように、クラスはリンクされます。
        パラメータ:
        c - リンクするクラス
        例外:
        NullPointerException - cnullの場合。
        関連項目:
        defineClass(String, byte[], int, int)
      • findSystemClass

        protected final Class<?> findSystemClass​(String name)
                                          throws ClassNotFoundException
        指定されたバイナリ名を持つクラスを探して、必要に応じてロードします。

        このメソッドはシステム・クラス・ローダー(getSystemClassLoader()を参照)を使ってそのクラスをロードします。 返されるClassオブジェクトは、そのオブジェクトに関連付けられたClassLoaderを1つ以上持つ場合があります。 ClassLoaderのサブクラスでは通常、このメソッドを呼び出す必要はありません。これは、ほとんどのクラス・ローダーではfindClass(String)だけをオーバーライドすればよいからです。

        パラメータ:
        name - クラスのバイナリ名
        戻り値:
        指定されたnameClassオブジェクト
        例外:
        ClassNotFoundException - クラスが見つからなかった場合
        関連項目:
        ClassLoader(ClassLoader), getParent()
      • findLoadedClass

        protected final Class<?> findLoadedClass​(String name)
        このローダーがこのバイナリ名を持つクラスの起動ローダーとしてJava仮想マシンにより記録されていた場合は、指定されたバイナリ名を持つクラスを返します。 それ以外の場合はnullを返します。
        パラメータ:
        name - クラスのバイナリ名
        戻り値:
        Classオブジェクト。クラスがロードされていない場合はnull
        導入されたバージョン:
        1.1
      • setSigners

        protected final void setSigners​(Class<?> c,
                                        Object[] signers)
        クラスの署名者を設定します。 このメソッドは、クラスの定義後に呼び出す必要があります。
        パラメータ:
        c - Classオブジェクト
        signers - クラスの署名者
        導入されたバージョン:
        1.1
      • findResource

        protected URL findResource​(String moduleName,
                                   String name)
                            throws IOException
        このクラス・ローダーに定義されたモジュール内のリソースへのURLを返します。 モジュールからのロードをサポートするクラス・ローダー実装は、このメソッドをオーバーライドする必要があります。
        APIの注:
        このメソッドは、Class.getResourceClass.getResourceAsStream、およびModule.getResourceAsStreamメソッドの基礎となります。 Module.getResourceAsStreamで指定されたカプセル化の規則の対象ではありません。
        実装要件:
        moduleNamenullのとき、findResource(String)を呼び出すことによって、デフォルトの実装はリソースを見つけようとします。 そうでなければ、nullを返します。
        パラメータ:
        moduleName - モジュール名。またはnullを使用して、このクラス・ローダーの「名前のないモジュール」内のリソースを検索
        name - リソース名
        戻り値:
        リソースへのURL。nullリソースが見つからない場合、URLを構築してリソースを見つけることができなかった場合、リソースへのアクセスがセキュリティ・マネージャによって拒否された場合、または指定された名前のモジュールがクラス・ローダーに定義されていない場合。
        例外:
        IOException - 入出力エラーが発生した場合
        導入されたバージョン:
        9
        関連項目:
        ModuleReader.find(String)
      • getResource

        public URL getResource​(String name)
        指定された名前を持つリソースを検索します。 リソースは、クラス・コードからコード位置に依存しない方法でアクセス可能なデータ(イメージ、オーディオ、テキストなど)です。

        リソースの名前は、/で区切られたパス名であり、これによってリソースが識別されます。

        名前付きモジュールのリソースは、Module.getResourceAsStreamで指定されたカプセル化ルールの影響を受けます。 さらに、リソースが".class"で終わる名前を持つ特殊な場合を除いて、このメソッドは、パッケージがopened無条件で(このメソッドの呼び出し元がリソースと同じモジュール内にあっても)である場合にのみ、名前付きモジュールのパッケージ内のリソースを検索します。

        APIの注:
        いくつかのモジュールが同じクラス・ローダーに定義され、複数のモジュールが指定された名前のリソースを含む場合、モジュールが検索される順序は指定されておらず、非常に予測不能な場合があります。 このメソッドをオーバーライドするときは、実装によっていずれかの委譲がgetResources(String)メソッドと確実に一致するようになることをお薦めします。
        実装要件:
        デフォルトの実装では、最初にリソースの親クラス・ローダーを検索します。親がnullの場合、仮想マシンに組み込まれているクラス・ローダーのパスが検索されます。 見つからなければ、このメソッドはfindResource(String)を呼び出してリソースを探します。
        パラメータ:
        name - リソース名
        戻り値:
        リソースを読み取るためのURL オブジェクト。nullリソースが見つからなかった場合、リソースを見つけるためにURLを構築できなかったか、リソースが無条件に開かれていないパッケージに入っているか、リソースへのアクセスがセキュリティ・マネージャによって拒否されました。
        例外:
        NullPointerException - namenullである場合
        導入されたバージョン:
        1.1
      • getResources

        public Enumeration<URL> getResources​(String name)
                                      throws IOException
        指定された名前を持つすべてのリソースを検索します。 リソースは、クラス・コードからコード位置に依存しない方法でアクセス可能なデータ(イメージ、オーディオ、テキストなど)です。

        リソースの名前は、/で区切られたパス名であり、これによってリソースが識別されます。

        名前付きモジュールのリソースは、Module.getResourceAsStreamで指定されたカプセル化ルールの影響を受けます。 さらに、リソースが".class"で終わる名前を持つ特殊な場合を除いて、このメソッドは、パッケージがopened無条件で(このメソッドの呼び出し元がリソースと同じモジュール内にあっても)である場合にのみ、名前付きモジュールのパッケージ内のリソースを検索します。

        APIの注:
        複数のモジュールが同じクラス・ローダーに定義され、複数のモジュールが指定された名前のリソースを含む場合、順序は指定されず、非常に予測できない場合があります。 このメソッドをオーバーライドするときは、実装によっていずれかの委譲がgetResource(String)メソッドと確実に一致するようになることをお薦めします。 これにより、列挙のnextElementメソッドから返される最初の要素が必ず、getResource(String)メソッドが返すリソースと同じものになるはずです。
        実装要件:
        デフォルトの実装では、最初にリソースの親クラス・ローダーを検索します。親がnullの場合、仮想マシンに組み込まれているクラス・ローダーのパスが検索されます。 次に、findResources(String)を呼び出して、このクラス・ローダー内の名前のリソースを検索します。 親クラス・ローダーを検索した後にfindResourcesで見つかった要素が検索されたURLを要素とする列挙を返します。
        パラメータ:
        name - リソース名
        戻り値:
        リソースのURLオブジェクトの列挙型。 リソースが見つからなかった場合、列挙は空になる。 URLを構築できないリソースが無条件に開かれていないパッケージに含まれているか、リソースへのアクセスがセキュリティ・マネージャによって拒否され、列挙型に返されません。
        例外:
        IOException - 入出力エラーが発生した場合
        NullPointerException - namenullである場合
        導入されたバージョン:
        1.2
      • resources

        public Stream<URL> resources​(String name)
        要素が指定された名前を持つすべてのリソースのURLであるストリームを返します。 リソースは、クラス・コードからコード位置に依存しない方法でアクセス可能なデータ(イメージ、オーディオ、テキストなど)です。

        リソースの名前は、/で区切られたパス名であり、これによってリソースが識別されます。

        リソースは、返されたストリームが評価されるときに配置されます。 評価結果がIOExceptionの場合、I/O例外はスローされるUncheckedIOExceptionにラップされます。

        名前付きモジュールのリソースは、Module.getResourceAsStreamで指定されたカプセル化ルールの影響を受けます。 さらに、リソースが".class"で終わる名前を持つ特殊な場合を除いて、このメソッドは、パッケージがopened無条件で(このメソッドの呼び出し元がリソースと同じモジュール内にあっても)である場合にのみ、名前付きモジュールのパッケージ内のリソースを検索します。

        APIの注:
        このメソッドをオーバーライドするときは、実装によっていずれかの委譲がgetResource(String)メソッドと確実に一致するようになることをお薦めします。 これにより、ストリームによって返される最初の要素が、getResource(String)メソッドが返すものと同じリソースであることが保証されます。
        実装要件:
        デフォルトの実装では、getResourcesを呼び出して、指定された名前を持つすべてのリソースを検索し、列挙内の要素をソースとして持つストリームを返します。
        パラメータ:
        name - リソース名
        戻り値:
        リソースURLオブジェクトのストリーム。 リソースが見つからない場合、ストリームは空になります。 URLを構築できないリソースが、無条件に開かれないパッケージ内にあるか、セキュリティ・マネージャによってリソースへのアクセスが拒否され、ストリームに存在しません。
        例外:
        NullPointerException - namenullである場合
        導入されたバージョン:
        9
      • findResource

        protected URL findResource​(String name)
        指定された名前を持つリソースを検索します。 クラス・ローダーの実装は、このメソッドをオーバーライドする必要があります。

        名前付きモジュールのリソースの場合、メソッドはModule getResourceAsStreamメソッドで指定されたカプセル化のルールを実装する必要があります。 さらに、パッケージがopenedを無条件に指定していない限り、名前付きモジュールのパッケージ内に非".class"リソースを見つけることはできません。

        実装要件:
        デフォルトの実装ではnullを返します。
        パラメータ:
        name - リソース名
        戻り値:
        リソースを読み取るためのURL オブジェクト。nullリソースが見つからなかった場合、リソースを見つけるためにURLを構築できなかったか、リソースが無条件に開かれていないパッケージに入っているか、リソースへのアクセスがセキュリティ・マネージャによって拒否されました。
        導入されたバージョン:
        1.2
      • findResources

        protected Enumeration<URL> findResources​(String name)
                                          throws IOException
        指定された名前を持つすべてのリソースを表すURLオブジェクトの列挙型を返します。 クラス・ローダーの実装は、このメソッドをオーバーライドする必要があります。

        名前付きモジュールのリソースの場合、メソッドはModule getResourceAsStreamメソッドで指定されたカプセル化のルールを実装する必要があります。 さらに、パッケージがopenedを無条件に指定していない限り、名前付きモジュールのパッケージ内に非".class"リソースを見つけることはできません。

        実装要件:
        デフォルトの実装は、要素を含まない列挙型を返します。
        パラメータ:
        name - リソース名
        戻り値:
        リソースのURLオブジェクトの列挙型。 リソースが見つからなかった場合、列挙は空になる。 URLを構築できないリソースが、無条件でオープンされていないパッケージに含まれているか、リソースへのアクセスがセキュリティ・マネージャによって拒否され、列挙型に返されません。
        例外:
        IOException - 入出力エラーが発生した場合
        導入されたバージョン:
        1.2
      • registerAsParallelCapable

        protected static boolean registerAsParallelCapable​()
        呼び出し元を「並列対応」として登録します。 登録が成功するのは、次の条件をすべて満たす場合だけです。
        1. 呼出し元のインスタンスが1つも作成されていない
        2. 呼出し元のすべてのスーパー・クラス(Objectクラスは除く)が並行可能として登録されている

        いったんクラス・ローダーを並行可能として登録すると、それを元に戻す方法はありません。

        戻り値:
        true(呼び出し側が正常に機能するように登録されている場合)およびfalse(そうでない場合)。
        導入されたバージョン:
        1.7
        関連項目:
        isRegisteredAsParallelCapable()
      • isRegisteredAsParallelCapable

        public final boolean isRegisteredAsParallelCapable​()
        このクラス・ローダーが「並列対応」、それ以外の場合はfalseとして登録されている場合はtrueを返します。
        戻り値:
        このクラス・ローダーがパラレルに対応している場合はtrue、そうでない場合はfalse
        導入されたバージョン:
        9
        関連項目:
        registerAsParallelCapable()
      • getSystemResource

        public static URL getSystemResource​(String name)
        クラスをロードするために使用される検索パスから、指定された名前のリソースを探します。 このメソッドはシステム・クラス・ローダー(getSystemClassLoader()を参照)を使ってリソースを見つけます。

        名前付きモジュールのリソースは、Module.getResourceAsStreamで指定されたカプセル化ルールの影響を受けます。 さらに、リソースが".class"で終わる名前を持つ特殊な場合を除いて、このメソッドは、パッケージが無条件でopenedの場合にのみ、名前付きモジュールのパッケージ内のリソースを検索します。

        パラメータ:
        name - リソース名
        戻り値:
        リソースへのURL; nullリソースが見つからない場合、リソースを見つけるためのURLを構築できなかった場合、リソースが無条件に開かれていないパッケージにある場合、またはリソースへのアクセスがセキュリティ・マネージャによって拒否された場合。
        導入されたバージョン:
        1.1
      • getSystemResources

        public static Enumeration<URL> getSystemResources​(String name)
                                                   throws IOException
        クラスをロードするために使用される検索パスから、指定された名前のすべてのリソースを探します。 このようにして見つかったリソースは、URLオブジェクトのEnumerationとして返されます。

        検索順については、getSystemResource(String)のドキュメントを参照してください。

        名前付きモジュールのリソースは、Module.getResourceAsStreamで指定されたカプセル化ルールの影響を受けます。 さらに、リソースが".class"で終わる名前を持つ特殊な場合を除いて、このメソッドは、パッケージが無条件でopenedの場合にのみ、名前付きモジュールのパッケージ内のリソースを検索します。

        パラメータ:
        name - リソース名
        戻り値:
        リソースのURLオブジェクトの列挙型。 リソースが見つからなかった場合、列挙は空になる。 URLを構築できないリソースが、無条件でオープンされていないパッケージに含まれているか、リソースへのアクセスがセキュリティ・マネージャによって拒否され、列挙型に返されません。
        例外:
        IOException - 入出力エラーが発生した場合
        導入されたバージョン:
        1.2
      • getResourceAsStream

        public InputStream getResourceAsStream​(String name)
        指定されたリソースを読み込む入力ストリームを返します。

        検索順については、getResource(String)のドキュメントを参照してください。

        名前付きモジュールのリソースは、Module.getResourceAsStreamで指定されたカプセル化ルールの影響を受けます。 さらに、リソースが".class"で終わる名前を持つ特殊な場合を除いて、このメソッドは、パッケージが無条件でopenedの場合にのみ、名前付きモジュールのパッケージ内のリソースを検索します。

        パラメータ:
        name - リソース名
        戻り値:
        リソースを読み込むための入力ストリーム。nullリソースが見つからない場合、リソースが無条件に開かれていないパッケージ内にある場合、またはリソースへのアクセスがセキュリティ・マネージャによって拒否された場合。
        例外:
        NullPointerException - namenullである場合
        導入されたバージョン:
        1.1
      • getSystemResourceAsStream

        public static InputStream getSystemResourceAsStream​(String name)
        クラスをロードするのに使用される検索パスから、指定された名前のリソースを、読込み用にオープンします。 このメソッドはシステム・クラス・ローダー(getSystemClassLoader()を参照)を使ってリソースを見つけます。

        名前付きモジュールのリソースは、Module.getResourceAsStreamで指定されたカプセル化ルールの影響を受けます。 さらに、リソースが".class"で終わる名前を持つ特殊な場合を除いて、このメソッドは、パッケージが無条件でopenedの場合にのみ、名前付きモジュールのパッケージ内のリソースを検索します。

        パラメータ:
        name - リソース名
        戻り値:
        リソースを読み込むための入力ストリーム。nullリソースが見つからない場合、リソースが無条件に開かれていないパッケージ内にある場合、またはリソースへのアクセスがセキュリティ・マネージャによって拒否された場合。
        導入されたバージョン:
        1.1
      • getParent

        public final ClassLoader getParent​()
        委譲のための親クラス・ローダーを返します。 実装によっては、nullを使ってブートストラップ・クラス・ローダーを表すこともできます。 このメソッドは、このクラス・ローダーの親がブートストラップ・クラス・ローダーの場合に、そのような実装でnullを返します。
        戻り値:
        親のClassLoader
        例外:
        SecurityException - セキュリティ・マネージャが存在し、呼び出し側クラス・ローダーがnullでなく、このクラス・ローダーの祖先ではなく、呼び出し元にRuntimePermission ("getClassLoader")がない場合
        導入されたバージョン:
        1.2
      • getUnnamedModule

        public final Module getUnnamedModule​()
        このクラス・ローダーの名前のないModuleを返します。
        戻り値:
        このクラス・ローダーの無名Module
        導入されたバージョン:
        9
        関連項目:
        Module.isNamed()
      • getPlatformClassLoader

        public static ClassLoader getPlatformClassLoader​()
        委譲のためのプラットフォーム・クラス・ローダーを返します。 すべての「プラットフォーム・クラス」は、プラットフォーム・クラス・ローダーに表示されます。
        実装上の注意:
        組み込みプラットフォーム・クラス・ローダーの名前は"platform"です。
        戻り値:
        プラットフォームClassLoader
        例外:
        SecurityException - セキュリティ・マネージャが存在し、呼び出し元クラス・ローダーがnullではなく、呼び出し元クラス・ローダーがプラットフォーム・クラス・ローダーの祖先と同じでも祖先でもなく、呼び出し元にRuntimePermission ("getClassLoader")がない場合
        導入されたバージョン:
        9
      • getSystemClassLoader

        public static ClassLoader getSystemClassLoader​()
        委譲のためのシステム・クラス・ローダーを返します。 これは、新しいClassLoaderインスタンスのデフォルトの委譲の親で、通常、アプリケーションを起動するためのクラス・ローダーです。

        このメソッドは、ランタイム起動シーケンスの早い段階で最初に呼び出されます。その時点で、システム・クラス・ローダーが作成されます。 このクラス・ローダーは、メイン・アプリケーション・スレッド(たとえば、メイン・クラスのmainメソッドを呼び出すスレッド)のコンテキスト・クラス・ローダーになります。

        デフォルトのシステム・クラス・ローダーは、このクラスの実装依存インスタンスです。

        このメソッドの最初の呼出し時に、システム・プロパティjava.system.class.loaderが定義される場合、このプロパティの値がシステム・クラス・ローダーとして返されるクラスの名前になります。このクラスは、デフォルトのシステム・クラス・ローダーを使用してロードされます。 また、このクラスは、委譲の親として使用される、ClassLoader型の単一のパラメータを取るpublicコンストラクタを定義する必要があります。 次に、このコンストラクタを使用し、デフォルトのシステム・クラス・ローダーをパラメータに指定して、インスタンスが作成されます。 結果として得られるクラス・ローダーは、システム・クラス・ローダーとして定義されます。 構築中、クラス・ローダーはgetSystemClassLoader()を呼び出さないように十分注意しなければなりません。 システム・クラス・ローダーの循環初期化が検出された場合、未指定のエラーまたは例外がスローされます。

        実装上の注意:
        システム・クラス・ローダーをオーバーライドするシステム・プロパティは、VMがほぼ完全に初期化されるまで検査されません。 起動時にこのメソッドを実行するコードは、システムが完全に初期化されるまで戻り値をキャッシュしないように注意してください。

        組み込みシステム・クラス・ローダーの名前は"app"です。 ビルトイン・システム・クラス・ローダーによって使用されるクラスパスは、VMの初期初期化中にシステム・プロパティ"java.class.path"によって決定されます。 システム・プロパティが定義されていないか、その値が空の文字列である場合、初期モジュールがアプリケーション・モジュール・パス上のモジュール、つまり「名前付きモジュール」であるときにクラス・パスはありません。 最初のモジュールがアプリケーション・モジュール・パスにない場合、クラスパスはデフォルトで現在の作業ディレクトリになります。

        戻り値:
        委任のためのシステムClassLoader
        例外:
        SecurityException - セキュリティ・マネージャが存在し、呼び出し側クラス・ローダーがnullでなく、システム・クラス・ローダーの祖先と同じでも祖先でもなく、呼び出し元にRuntimePermission ("getClassLoader")がない場合
        IllegalStateException - java.system.class.loaderプロパティにより指定されたクラス・ローダーの構築時に、再帰的に呼び出される場合。
        Error - システム・プロパティjava.system.class.loaderは定義されるが、名前付きクラスをロードできない場合、プロバイダ・クラスは必須コンストラクタを定義しないか、その呼出し時に例外がスローされる。 エラーの根本原因は、Throwable.getCause()メソッドを使用して取得できる。
      • definePackage

        protected Package definePackage​(String name,
                                        String specTitle,
                                        String specVersion,
                                        String specVendor,
                                        String implTitle,
                                        String implVersion,
                                        String implVendor,
                                        URL sealBase)
        このClassLoadernameでパッケージを定義します。

        「パッケージ名」はクラス・ローダー内で一意でなければならず、一度作成すると再定義または変更することはできません。

        クラス・ローダーがバージョン情報などの特定のプロパティを持つパッケージを定義したい場合、クラス・ローダーはdefineClassを呼び出す前にこのdefinePackageメソッドを呼び出す必要があります。 それ以外の場合、defineClassメソッドは、新しく定義されたクラスのパッケージに対応するこのクラス・ローダー内のパッケージを定義します。この定義されたパッケージのプロパティはPackageによって指定されます。

        APIの注:
        JARのクラスのパッケージを定義したいクラス・ローダーは、通常、JARマニフェストの仕様と実装のタイトル、バージョン、およびベンダーを使用します。 パッケージがJARマニフェストでsealedとして指定されている場合、JARファイルのURLは通常sealBaseとして使用されます。 このクラス・ローダーによって定義されたパッケージ'p'のクラスが複数のJARからロードされている場合、Packageオブジェクトには、定義されたパッケージ'p'の最初のクラスおよび最初に読み込まれるパッケージ'p'のJARマニフェストによって異なる情報が含まれます。

        クラス・ローダーは、「名前付きモジュール」内のパッケージを明示的に定義するためにこのメソッドを呼び出さないことを強く推奨します。代わりに、クラスが「定義されている」のときにパッケージが自動的に定義されます。 Packageを明示的に定義することが望ましい場合は、名前付きモジュールのすべてのパッケージがPackageで指定されたプロパティで定義されていることを確認する必要があります。 さもなければ、名前付きモジュール内のいくつかのPackageオブジェクトは、例えば、異なるシール・ベースでシールされてもよい。

        パラメータ:
        name - 「パッケージ名」
        specTitle - 仕様のタイトル
        specVersion - 仕様のバージョン
        specVendor - 仕様のベンダー
        implTitle - 実装のタイトル
        implVersion - 実装のバージョン
        implVendor - 実装のベンダー
        sealBase - nullでない場合、このパッケージは指定されたコード・ソースURLオブジェクトに関して密封されます。 そうでない場合、パッケージはシールされない
        戻り値:
        新しく定義されたPackageオブジェクト
        例外:
        NullPointerException - namenullの場合。
        IllegalArgumentException - 指定されたnameのパッケージがこのクラス・ローダーによってすでに定義されている場合
        導入されたバージョン:
        1.2
        関連項目:
        JARファイルの仕様: パッケージ・シーリング
      • getDefinedPackage

        public final Package getDefinedPackage​(String name)
        このクラス・ローダーによって定義されたnamePackageを返します。
        パラメータ:
        name - 「パッケージ名」
        戻り値:
        このクラス・ローダーによって定義された指定された名前のPackage、または見つからない場合はnull
        例外:
        NullPointerException - namenullの場合。
        導入されたバージョン:
        9
      • getDefinedPackages

        public final Package[] getDefinedPackages​()
        このクラス・ローダーによって定義されたすべてのPackageを返します。 返される配列には、同じ名前の重複したPackageがありません。
        APIの注:
        このメソッドは、既存のgetPackages()メソッドとの一貫性のために、SetまたはStreamではなく配列を返します。
        戻り値:
        このクラス・ローダーによって定義されたPackageオブジェクトの配列。このクラス・ローダーによってパッケージが定義されていない場合は、長さがゼロの配列を返します。
        導入されたバージョン:
        9
      • getPackage

        @Deprecated(since="9")
        protected Package getPackage​(String name)
        非推奨。 複数のクラス・ローダーが互いに委譲して同じパッケージ名を持つクラスを定義し、そのようなローダーの1つがgetPackageのルックアップ動作に依存して親ローダーからPackageを返す場合、Packageによって公開されるプロパティは残りのプログラムでの期待どおりにならない場合があります。 たとえば、Packageは、子ローダーによって定義されたpackage-info.classファイルに注釈が存在する場合でも、親ローダーによって定義されたpackage-info.classファイルの注釈のみを公開します。 より堅牢なアプローチは、指定されたクラス・ローダーのPackageを返すgetDefinedPackage(java.lang.String)メソッドを使用することです。
        このクラス・ローダーとその祖先のnameによるパッケージを検索します。

        このクラス・ローダーが指定された名前のPackageを定義する場合、Packageが返されます。 それ以外の場合、このクラス・ローダーの祖先は、指定された名前のPackageの(親による親)を再帰的に検索されます。

        APIの注:
        platform class loaderはアプリケーション・クラス・ローダーに委譲することができますが、アプリケーション・クラス・ローダーはその祖先ではありません。 プラットフォーム・クラス・ローダーで呼び出された場合、このメソッドはアプリケーション・クラス・ローダーに定義されたパッケージを検出しません。
        パラメータ:
        name - 「パッケージ名」
        戻り値:
        このクラス・ローダーまたはその祖先によって定義された指定された名前に対応するPackage、または見つからない場合はnull
        例外:
        NullPointerException - namenullの場合。
        導入されたバージョン:
        1.2
      • getPackages

        protected Package[] getPackages​()
        このクラス・ローダーとその祖先によって定義されたPackageをすべて返します。 返される配列には、同じパッケージ名の複数のPackageオブジェクトが含まれ、それぞれがクラス・ローダー階層の異なるクラス・ローダーによって定義されます。
        APIの注:
        platform class loaderは、アプリケーション・クラス・ローダーに委譲することができます。 言い換えれば、アプリケーション・クラス・ローダーに定義されたモジュール内のパッケージは、プラットフォーム・クラス・ローダーに表示されることがあります。 一方、アプリケーション・クラス・ローダーはその祖先ではないため、プラットフォーム・クラス・ローダーで呼び出されると、このメソッドはアプリケーション・クラス・ローダーに定義されたパッケージを返しません。
        戻り値:
        このクラス・ローダーとその祖先によって定義されたPackageオブジェクトの配列
        導入されたバージョン:
        1.2
      • findLibrary

        protected String findLibrary​(String libname)
        ネイティブ・ライブラリの絶対パス名を返します。 VMは、このメソッドを呼び出して、このクラス・ローダーによってロードされたクラスのネイティブ・ライブラリを検索します。 このメソッドがnullを返す場合、VMはjava.library.pathプロパティで指定されたパスに従ってライブラリを検索します。
        パラメータ:
        libname - ライブラリ名
        戻り値:
        ネイティブ・ライブラリの絶対パス
        導入されたバージョン:
        1.2
        関連項目:
        System.loadLibrary(String), System.mapLibraryName(String)
      • setDefaultAssertionStatus

        public void setDefaultAssertionStatus​(boolean enabled)
        このクラス・ローダーのデフォルトのアサーション・ステータスを設定します。 この設定により、将来、このクラス・ローダーによってロードされ初期化されるクラスのアサーションがデフォルトで有効か無効かが決まります。 この設定をパッケージ単位またはクラス単位でオーバーライドするには、setPackageAssertionStatus(String, boolean)またはsetClassAssertionStatus(String, boolean)を呼び出します。
        パラメータ:
        enabled - このクラス・ローダーによりロードされるクラスのアサーションが、デフォルトで有効な場合はtrue、デフォルトで無効な場合はfalse
        導入されたバージョン:
        1.4
      • setPackageAssertionStatus

        public void setPackageAssertionStatus​(String packageName,
                                              boolean enabled)
        指定されたパッケージ・デフォルトのアサーション・ステータスを設定します。 パッケージ・デフォルトのアサーション・ステータスにより、指定されたパッケージまたはそのサブパッケージのどれかに属する、将来初期化されるクラスのアサーション・ステータスが決まります。

        pという名前のパッケージのサブパッケージは、すべて名前がp.で始まります。 たとえば、javax.swing.textjavax.swingのサブパッケージであり、java.utiljava.lang.reflectはどちらもjavaのサブパッケージです。

        1つのクラスに複数のパッケージ・デフォルトが適用される場合は、そのクラスにもっとも関連性の高いパッケージ・デフォルトが、ほかのパッケージ・デフォルトに優先して使用されます。 たとえば、javax.langjavax.lang.reflectの両方にパッケージ・デフォルトが関連付けられている場合、後者のパッケージ・デフォルトはjavax.lang.reflect内のクラスに適用されます。

        パッケージ・デフォルトは、クラス・ローダーのデフォルトのアサーション・ステータスよりも優先されます。ただし、setClassAssertionStatus(String, boolean)を呼び出すことで、クラス単位でオーバーライドできます。

        パラメータ:
        packageName - パッケージ・デフォルトのアサーション・ステータスを設定するパッケージ名。 null値はカレントである無名パッケージを示す(『Java™言語仕様』のセクション7.4.2を参照。)
        enabled - このクラス・ローダーによりロードされ、指定されたパッケージまたはそのサブパッケージのどれかに属するクラスが、デフォルトで有効なアサーションを保持する場合はtrue、デフォルトで無効なアサーションを保持する場合はfalse
        導入されたバージョン:
        1.4
      • setClassAssertionStatus

        public void setClassAssertionStatus​(String className,
                                            boolean enabled)
        このクラス・ローダーの指定されたトップレベル・クラスおよびそこに含まれるネストされたクラス内に対して、目的のアサーション・ステータスを設定します。 この設定は、クラス・ローダーのデフォルトのアサーション・ステータス、およびパッケージ単位で適用可能なデフォルトに優先されます。 指定されたクラスが初期化済みの場合、このメソッドは無効になります (クラスの初期化後にアサーション・ステータスを変更することはできないため)。

        指定されたクラスがトップ・レベルのクラスではない場合、この呼出しは、どのクラスのアサーション・ステータスに対しても影響を与えません。

        パラメータ:
        className - アサーション・ステータスを設定するトップ・レベルのクラスの完全指定クラス名。
        enabled - 初期化時に、指定されたクラスでアサーションを有効にする場合はtrue、アサーションを無効にする場合はfalse
        導入されたバージョン:
        1.4
      • clearAssertionStatus

        public void clearAssertionStatus​()
        このクラス・ローダーのデフォルトのアサーション・ステータスをfalseに設定し、クラス・ローダーに関連付けられたパッケージ・デフォルトまたはクラスのアサーション・ステータス設定をすべて破棄します。 このメソッドを利用すると、クラス・ローダーがコマンド行または永続的なアサーション・ステータス設定をすべて無視するため、クリーンな状態で起動できます。
        導入されたバージョン:
        1.4