public abstract class ClassLoader extends Object
すべてのClass
オブジェクトには、それを定義したClassLoaderへの参照
が含まれています。
配列クラスのClassオブジェクトは、クラス・ローダーによっては作成されず、Java Runtimeの要求に応じて自動的に作成されます。配列クラスのクラス・ローダー(Class.getClassLoader()
から返される)は、その要素の型のクラス・ローダーと同じになります。要素の型がプリミティブ型の場合、配列クラスはクラス・ローダーを持ちません。
アプリケーションは、Java仮想マシンが動的にクラスをロードするように拡張するために、ClassLoaderのサブクラスを実装します。
クラス・ローダーは一般的に、セキュリティ・マネージャがセキュリティ・ドメインを示すために使われます。
ClassLoaderクラスは、委譲モデルを使ってクラスとリソースを探します。ClassLoaderの各インスタンスは、関連する親クラス・ローダーを持ちます。クラスまたはリソースを見つけるために呼び出されると、ClassLoaderインスタンスはそれ自体でクラスまたはリソースの検索を試みる前に、その検索を親クラスに委譲します。「ブートストラップ・クラス・ローダー」と呼ばれる仮想マシンの組込みクラス・ローダーはそれ自体では親を持たず、ClassLoaderインスタンスの親として動作します。
クラスの並行ロードをサポートするクラス・ローダーは並行可能なクラス・ローダーと呼ばれ、そのクラス初期化時にClassLoader.registerAsParallelCapable
メソッドを呼び出して自身を登録する必要があります。ClassLoaderクラスはデフォルトで並行可能として登録されます。ただしそのサブクラスについては、並行可能な場合には自身を登録する必要があります。
委譲モデルが厳密に階層化されていない環境では、クラス・ローダーは並行可能である必要があります。そうでないと、クラス・ロード・プロセス中にローダーのロックが保持されるため、クラス・ロード時にデッドロックが発生する可能性があります(loadClass
メソッドを参照)。
通常、Java仮想マシンは、プラットフォームに依存しない方法でローカル・ファイル・システムからクラスをロードします。たとえば、UNIXシステムでは仮想マシンは、CLASSPATH環境変数によって定義されたディレクトリからクラスをロードします。
ただし、ファイルから作成できないクラスもあります。このようなクラスは、ネットワークなどのほかのソースから作成したり、アプリケーションが構築したりします。defineClass
メソッドは、バイトの配列をClassクラスのインスタンスに変換します。この新しく定義されたクラスのインスタンスを作成するには、Class.newInstance
を使用します。
クラス・ローダーで作成したオブジェクトのメソッドとコンストラクタは、ほかのクラスを参照できます。参照するクラスを判定するために、Java仮想マシンは、クラスを最初に作成したクラス・ローダーのloadClass
メソッドを呼び出します。
たとえば、アプリケーションはネットワーク・クラス・ローダーを作成して、サーバーからクラス・ファイルをダウンロードできます。コードは次のようになります。
ClassLoader loader = new NetworkClassLoader(host, port); Object main = loader.loadClass("Main", true).newInstance(); . . .
ネットワーク・クラス・ローダーのサブクラスは、ネットワークからクラスをロードするためにfindClass
メソッドとloadClassDataメソッドを定義する必要があります。クラスを作成するバイトを一度ダウンロードしたら、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(tm)言語仕様』で規定されたバイナリ名である必要があります。
次に、有効なクラス名の例を示します。
"java.lang.String" "javax.swing.JSpinner$DefaultEditor" "java.security.KeyStore$Builder$FileBuilder$1" "java.net.URLClassLoader$3$1"
resolveClass(Class)
修飾子 | コンストラクタと説明 |
---|---|
protected |
ClassLoader()
getSystemClassLoader() メソッドから返されたClassLoaderを親クラス・ローダーとして使用し、新しいクラス・ローダーを作成します。 |
protected |
ClassLoader(ClassLoader parent)
指定された親クラス・ローダーを使って、委譲のために新しいクラス・ローダーを作成します。
|
修飾子と型 | メソッドと説明 |
---|---|
void |
clearAssertionStatus()
このクラス・ローダーのデフォルトのアサーション・ステータスをfalseに設定し、クラス・ローダーに関連付けられたパッケージ・デフォルトまたはクラスのアサーション・ステータス設定をすべて破棄します。
|
protected Class<?> |
defineClass(byte[] b, int off, int len)
非推奨。
defineClass(String, byte[], int, int) に置き換えられています。 |
protected Class<?> |
defineClass(String name, byte[] b, int off, int len)
バイトの配列をClassクラスのインスタンスに変換します。
|
protected Class<?> |
defineClass(String name, byte[] b, int off, int len, ProtectionDomain protectionDomain)
オプションのProtectionDomainを使って、バイトの配列をClassクラスのインスタンスに変換します。
|
protected Class<?> |
defineClass(String name, ByteBuffer b, ProtectionDomain protectionDomain)
オプションのProtectionDomainを使って、
ByteBuffer をクラスClassのインスタンスに変換します。 |
protected Package |
definePackage(String name, String specTitle, String specVersion, String specVendor, String implTitle, String implVersion, String implVendor, URL sealBase)
このClassLoaderで名前を使ってパッケージを定義します。
|
protected Class<?> |
findClass(String name)
指定されたバイナリ名を持つクラスを探します。
|
protected String |
findLibrary(String libname)
ネイティブ・ライブラリの絶対パス名を返します。
|
protected Class<?> |
findLoadedClass(String name)
|
protected URL |
findResource(String name)
指定された名前を持つリソースを検索します。
|
protected Enumeration<URL> |
findResources(String name)
指定された名前を持つすべてのリソースを表す
URL オブジェクトの列挙を返します。 |
protected Class<?> |
findSystemClass(String name)
指定されたバイナリ名を持つクラスを探して、必要に応じてロードします。
|
protected Object |
getClassLoadingLock(String className)
クラス・ロード操作用のロック・オブジェクトを返します。
|
protected Package |
getPackage(String name)
このクラス・ローダーかその祖先のどれかによって定義されたPackageを返します。
|
protected Package[] |
getPackages()
このクラス・ローダーとその祖先によって定義されたすべてのPackageを返します。
|
ClassLoader |
getParent()
委譲のための親クラス・ローダーを返します。
|
URL |
getResource(String name)
指定された名前を持つリソースを検索します。
|
InputStream |
getResourceAsStream(String name)
指定されたリソースを読み込む入力ストリームを返します。
|
Enumeration<URL> |
getResources(String name)
指定された名前を持つすべてのリソースを検索します。
|
static ClassLoader |
getSystemClassLoader()
委譲のためのシステム・クラス・ローダーを返します。
|
static URL |
getSystemResource(String name)
クラスをロードするために使用される検索パスから、指定された名前のリソースを探します。
|
static InputStream |
getSystemResourceAsStream(String name)
クラスをロードするのに使用される検索パスから、指定された名前のリソースを、読込み用にオープンします。
|
static Enumeration<URL> |
getSystemResources(String name)
クラスをロードするために使用される検索パスから、指定された名前のすべてのリソースを探します。
|
Class<?> |
loadClass(String name)
指定されたバイナリ名を持つクラスをロードします。
|
protected Class<?> |
loadClass(String name, boolean resolve)
指定されたバイナリ名を持つクラスをロードします。
|
protected static boolean |
registerAsParallelCapable()
呼出し元を並行可能として登録します。
|
protected void |
resolveClass(Class<?> c)
指定されたクラスをリンクします。
|
void |
setClassAssertionStatus(String className, boolean enabled)
このクラス・ローダーの指定されたトップレベル・クラスおよびそこに含まれるネストされたクラス内に対して、目的のアサーション・ステータスを設定します。
|
void |
setDefaultAssertionStatus(boolean enabled)
このクラス・ローダーのデフォルトのアサーション・ステータスを設定します。
|
void |
setPackageAssertionStatus(String packageName, boolean enabled)
指定されたパッケージ・デフォルトのアサーション・ステータスを設定します。
|
protected void |
setSigners(Class<?> c, Object[] signers)
クラスの署名者を設定します。
|
protected ClassLoader(ClassLoader parent)
セキュリティ・マネージャがある場合はそのcheckCreateClassLoader
メソッドが呼び出されます。これはセキュリティ例外となる場合があります。
parent
- 親クラス・ローダーSecurityException
- セキュリティ・マネージャが存在し、そのcheckCreateClassLoaderメソッドが新しいクラス・ローダーの作成を許可しない場合protected ClassLoader()
getSystemClassLoader()
メソッドから返されたClassLoaderを親クラス・ローダーとして使用し、新しいクラス・ローダーを作成します。
セキュリティ・マネージャがある場合はそのcheckCreateClassLoader
メソッドが呼び出されます。これはセキュリティ例外となる場合があります。
SecurityException
- セキュリティ・マネージャが存在し、そのcheckCreateClassLoaderメソッドが新しいクラス・ローダーの作成を許可しない場合public Class<?> loadClass(String name) throws ClassNotFoundException
loadClass(String, boolean)
メソッドの場合と同じです。Java仮想マシンがこのメソッドを呼び出して、クラス参照を解決します。このメソッドを呼び出すことは、loadClass(name, false)
を呼び出すことに相当します。name
- クラスのバイナリ名ClassNotFoundException
- クラスが見つからなかった場合protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException
クラスがすでにロードされていないかチェックするためにfindLoadedClass(String)
を呼び出す。
親クラス・ローダーでloadClass
メソッドを呼び出す。親がnullの場合、仮想マシンに組み込まれたクラス・ローダーが代わりに使用される。
findClass(String)
メソッドを呼び出してクラスを探す。
上記の手順でクラスが見つかった場合、resolveフラグがtrueのときには、このメソッドは見つかったClassオブジェクトに対してresolveClass(Class)
メソッドを呼び出します。
ClassLoaderのサブクラスでは、このメソッドではなくfindClass(String)
をオーバーライドすることをお薦めします。
このメソッドは、オーバーライドされないかぎり、クラスのロード処理中に、getClassLoadingLock
メソッドの結果に対して同期を行います。
name
- クラスのバイナリ名resolve
- trueの場合は、クラスを解決するClassNotFoundException
- クラスが見つからなかった場合protected Object getClassLoadingLock(String className)
className
- ロードするクラスの名前NullPointerException
- 並行可能として登録されていて、classNameがnullの場合loadClass(String, boolean)
protected Class<?> findClass(String name) throws ClassNotFoundException
loadClass
メソッドによって呼び出されます。デフォルトの実装はClassNotFoundExceptionをスローします。name
- クラスのバイナリ名ClassNotFoundException
- クラスが見つからなかった場合@Deprecated protected final Class<?> defineClass(byte[] b, int off, int len) throws ClassFormatError
defineClass(String, byte[], int, int)
に置き換えられています。b
- クラス・データを構成するバイト。offからoff+len-1までの位置にあるbyteは、『Java(tm)仮想マシン仕様』で定義される有効なクラス・ファイルの形式を持つoff
- クラス・データのb内での開始オフセットlen
- クラス・データの長さClassFormatError
- データが有効なクラスを含まなかった場合IndexOutOfBoundsException
- offまたはlenが負の場合、またはoff+lenがb.lengthより大きい場合SecurityException
- このクラスとは異なる一連の証明書で署名されたクラスを含むパッケージにこのクラスを追加しようとした場合、または「java.
」で始まる完全指定名を持つパッケージ内でクラスを定義しようとした場合。loadClass(String, boolean)
, resolveClass(Class)
protected final Class<?> defineClass(String name, byte[] b, int off, int len) throws ClassFormatError
このメソッドは、新しく定義されたクラスにデフォルトのProtectionDomain
を割り当てます。ProtectionDomainには事実上、Policy.getPolicy().getPermissions(new CodeSource(null, null))
の呼出し時に返されるのと同じアクセス権のセットが付与されます。デフォルト・ドメインは、defineClass
の初回呼出し時に作成され、以降の呼出し時には再利用されます。
特定のProtectionDomainをクラスに割り当てるには、ProtectionDomainをその引数の1つとしてとるdefineClass
メソッドを使用します。
name
- クラスの予想されるバイナリ名。不明な場合はnullb
- クラス・データを構成するバイト。offからoff+len-1までの位置にあるbyteは、『Java(tm)仮想マシン仕様』で定義される有効なクラス・ファイルの形式を持つoff
- クラス・データのb内での開始オフセットlen
- クラス・データの長さClassFormatError
- データが有効なクラスを含まなかった場合IndexOutOfBoundsException
- offまたはlenが負の場合、またはoff+lenがb.lengthより大きい場合SecurityException
- このクラス(未署名)とは異なる証明書セットを使って署名されたクラスを含むパッケージに、このクラスを追加しようとした場合、またはnameが「java.」で始まる場合。loadClass(String, boolean)
, resolveClass(Class)
, CodeSource
, SecureClassLoader
protected final Class<?> defineClass(String name, byte[] b, int off, int len, ProtectionDomain protectionDomain) throws ClassFormatError
defineClass(String, byte[], int, int)
のドキュメントで指定されているように、デフォルト・ドメインがクラスに割り当てられます。最初にクラスを解決してからでなければ、クラスを使用することはできません。
パッケージで定義される最初のクラスにより、そのパッケージ内で続いて定義されたすべてのクラスに必要な、証明書の正確なセットが決まります。クラスの証明書のセットは、そのクラスのProtectionDomain内のCodeSource
から取得します。そのパッケージに追加されたクラスには同一の証明書のセットが含まれている必要があり、含まれていない場合はSecurityExceptionがスローされます。nameがnullの場合、この判別は実行されません。必ず、定義するクラスのバイナリ名をバイトとともに渡すようにしてください。このようにして渡すと、定義するクラスは実際に考えたとおりのクラスになります。
「java.*」パッケージのすべてのクラスはブートストラップ・クラス・ローダーでしか定義できないので、「java.」で始まるnameを指定することはできません。nameがnullでない場合、それは、バイト配列「b」で指定されるクラスのバイナリ名に等しくなる必要があります。それ以外の場合は、NoClassDefFoundError
がスローされます。
name
- クラスの予想されるバイナリ名。不明な場合はnullb
- クラス・データを構成するバイト。offからoff+len-1までの位置にあるbyteは、『Java(tm)仮想マシン仕様』で定義される有効なクラス・ファイルの形式を持つoff
- クラス・データのb内での開始オフセットlen
- クラス・データの長さprotectionDomain
- このクラスのProtectionDomainClassFormatError
- データが有効なクラスを含まなかった場合NoClassDefFoundError
- nameが、bで指定されたクラスのバイナリ名に等しくない場合IndexOutOfBoundsException
- offまたはlenが負の場合、またはoff+lenがb.lengthより大きい場合SecurityException
- このクラスとは異なる証明書セットを使って署名されたクラスを含むパッケージに、このクラスを追加しようとする場合、またはnameが「java.」で始まる場合。protected final Class<?> defineClass(String name, ByteBuffer b, ProtectionDomain protectionDomain) throws ClassFormatError
ByteBuffer
をクラスClassのインスタンスに変換します。ドメインがnullの場合、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
- クラスの予想されるバイナリ名。不明な場合はnullb
- クラス・データを構成するバイト。b.position()からb.position()+b.limit() -1までの位置にあるbyteは、『Java(tm)仮想マシン仕様』で定義される有効なクラス・ファイルの形式を持つ。protectionDomain
- このクラスのProtectionDomain、またはnull。ClassFormatError
- データが有効なクラスを含まなかった場合。NoClassDefFoundError
- nameが、bで指定されたクラスのバイナリ名に等しくない場合SecurityException
- このクラスとは異なる証明書セットを使って署名されたクラスを含むパッケージに、このクラスを追加しようとする場合、またはnameが「java.」で始まる場合。defineClass(String, byte[], int, int, ProtectionDomain)
protected final void resolveClass(Class<?> c)
c
- リンクするクラスNullPointerException
- cがnullの場合。defineClass(String, byte[], int, int)
protected final Class<?> findSystemClass(String name) throws ClassNotFoundException
このメソッドはシステム・クラス・ローダー(getSystemClassLoader()
を参照)を使ってそのクラスをロードします。返されるClassオブジェクトは、そのオブジェクトに関連付けられたClassLoaderを1つ以上持つ場合があります。ClassLoaderのサブクラスでは通常、このメソッドを呼び出す必要はありません。これは、ほとんどのクラス・ローダーではfindClass(String)
だけをオーバーライドすればよいからです。
name
- クラスのバイナリ名ClassNotFoundException
- クラスが見つからなかった場合ClassLoader(ClassLoader)
, getParent()
protected final Class<?> findLoadedClass(String name)
name
- クラスのバイナリ名protected final void setSigners(Class<?> c, Object[] signers)
c
- Classオブジェクトsigners
- クラスの署名者public URL getResource(String name)
リソースの名前は、「/」で区切られたパス名であり、これによってリソースが識別されます。
このメソッドは、まずリソースの親クラス・ローダーを検索します。親がnullの場合、仮想マシンに組み込まれたクラス・ローダーのパスが検索されます。それに失敗すると、このメソッドはリソースを見つけるためにfindResource(String)
を呼び出します。
getResources(String)
メソッドと確実に一致するようになることをお薦めします。name
- リソース名public Enumeration<URL> getResources(String name) throws IOException
リソースの名前は、/で区切られたパス名であり、これによってリソースが識別されます。
検索順については、getResource(String)
のドキュメントを参照してください。
getResource(String)
メソッドと確実に一致するようになることをお薦めします。これにより、列挙のnextElement
メソッドから返される最初の要素が必ず、getResource(String)
メソッドが返すリソースと同じものになるはずです。name
- リソース名URL
オブジェクトの列挙。リソースが見つからなかった場合、列挙は空になる。クラス・ローダーがアクセスできないリソースは列挙に入らないIOException
- 入出力エラーが発生した場合findResources(String)
protected URL findResource(String name)
name
- リソース名protected Enumeration<URL> findResources(String name) throws IOException
URL
オブジェクトの列挙を返します。クラス・ローダーの実装は、リソースのロード元を特定するためにこのメソッドをオーバーライドします。name
- リソース名URL
オブジェクトの列挙IOException
- 入出力エラーが発生した場合protected static boolean registerAsParallelCapable()
いったんクラス・ローダーを並行可能として登録すると、それを元に戻す方法はありません。
public static URL getSystemResource(String name)
getSystemClassLoader()
を参照)を使ってリソースを見つけます。name
- リソース名URL
オブジェクト。リソースが見つからなかった場合はnullpublic static Enumeration<URL> getSystemResources(String name) throws IOException
URL
オブジェクトのEnumeration
として返されます。
検索順については、getSystemResource(String)
のドキュメントを参照してください。
name
- リソース名URL
オブジェクトの列挙IOException
- 入出力エラーが発生した場合public InputStream getResourceAsStream(String name)
検索順については、getResource(String)
のドキュメントを参照してください。
name
- リソース名public static InputStream getSystemResourceAsStream(String name)
getSystemClassLoader()
を参照)を使ってリソースを見つけます。name
- リソース名public final ClassLoader getParent()
セキュリティ・マネージャが存在する場合、呼出し側のクラス・ローダーがnullでなく、このクラス・ローダーの祖先でもない場合は、このメソッドはRuntimePermission("getClassLoader")
アクセス権を使ってセキュリティ・マネージャのcheckPermission
メソッドを呼び出すことによって、親クラス・ローダーへのアクセスが許可されていることを確認します。そうでない場合は、SecurityExceptionがスローされます。
SecurityException
- セキュリティ・マネージャが存在し、そのcheckPermissionメソッドがこのクラス・ローダーの親クラス・ローダーへのアクセスを許可しない場合。public static ClassLoader getSystemClassLoader()
このメソッドが最初に呼び出されるのは、実行時の起動シーケンスの初期です。この時点で、メソッドはシステム・クラス・ローダーを作成し、呼び出すThreadのコンテキスト・クラス・ローダーにそれを設定します。
デフォルトのシステム・クラス・ローダーは、このクラスの実装依存インスタンスです。
このメソッドの最初の呼出し時に、システム・プロパティ「java.system.class.loader」が定義される場合、このプロパティの値がシステム・クラス・ローダーとして返されるクラスの名前になります。このクラスは、デフォルトのシステム・クラス・ローダーを使用してロードされます。また、このクラスは、委譲の親として使用される、ClassLoader型の単一のパラメータを取るpublicコンストラクタを定義する必要があります。次に、このコンストラクタを使用し、デフォルトのシステム・クラス・ローダーをパラメータに指定して、インスタンスが作成されます。結果として得られるクラス・ローダーは、システム・クラス・ローダーとして定義されます。
セキュリティ・マネージャが存在し、呼出し元のクラス・ローダーがnullでなく、かつ呼出し元のクラス・ローダーがシステム・クラス・ローダーと同じでもその祖先でもない場合、このメソッドは、セキュリティ・マネージャのcheckPermission
メソッドをRuntimePermission("getClassLoader")
アクセス権で呼び出すことで、システム・クラス・ローダーへのアクセスを確認します。そうでない場合は、SecurityExceptionがスローされます。
SecurityException
- セキュリティ・マネージャが存在し、そのcheckPermissionメソッドがこのシステム・クラス・ローダーへのアクセスを許可しない場合。IllegalStateException
- 「java.system.class.loader」プロパティにより指定されたクラス・ローダーの構築時に、再帰的に呼び出される場合。Error
- システム・プロパティ「java.system.class.loader」は定義されるが、名前付きクラスをロードできない場合、プロバイダ・クラスは必須コンストラクタを定義しないか、その呼出し時に例外がスローされる。エラーの根本原因は、Throwable.getCause()
メソッドを使用して取得できる。protected Package definePackage(String name, String specTitle, String specVersion, String specVendor, String implTitle, String implVersion, String implVendor, URL sealBase) throws IllegalArgumentException
name
- パッケージ名specTitle
- 仕様のタイトルspecVersion
- 仕様のバージョンspecVendor
- 仕様のベンダーimplTitle
- 実装のタイトルimplVersion
- 実装のバージョンimplVendor
- 実装のベンダーsealBase
- nullでない場合、このパッケージは指定されたコード・ソースURL
オブジェクトに対してシールされる。そうでない場合、パッケージはシールされないIllegalArgumentException
- パッケージ名が、このクラス・ローダーかまたはその祖先の1つに存在するパッケージと重複する場合protected Package getPackage(String name)
name
- パッケージ名protected Package[] getPackages()
protected String findLibrary(String libname)
libname
- ライブラリ名System.loadLibrary(String)
, System.mapLibraryName(String)
public void setDefaultAssertionStatus(boolean enabled)
setPackageAssertionStatus(String, boolean)
またはsetClassAssertionStatus(String, boolean)
を呼び出します。enabled
- このクラス・ローダーによりロードされるクラスのアサーションが、デフォルトで有効な場合はtrue、デフォルトで無効な場合はfalse。public void setPackageAssertionStatus(String packageName, boolean enabled)
pという名前のパッケージのサブパッケージは、すべて名前が「p.」で始まります。たとえば、javax.swing.textはjavax.swingのサブパッケージであり、java.utilとjava.lang.reflectはどちらもjavaのサブパッケージです。
1つのクラスに複数のパッケージ・デフォルトが適用される場合は、そのクラスにもっとも関連性の高いパッケージ・デフォルトが、ほかのパッケージ・デフォルトに優先して使用されます。たとえば、javax.langとjavax.lang.reflectの両方にパッケージ・デフォルトが関連付けられている場合、後者のパッケージ・デフォルトはjavax.lang.reflect内のクラスに適用されます。
パッケージ・デフォルトは、クラス・ローダーのデフォルトのアサーション・ステータスよりも優先されます。ただし、setClassAssertionStatus(String, boolean)
を呼び出すことで、クラス単位でオーバーライドできます。
packageName
- パッケージ・デフォルトのアサーション・ステータスを設定するパッケージ名。null値は「カレント」である無名パッケージを示す(『Java(tm)言語仕様』のセクション7.4.2を参照。)enabled
- このクラス・ローダーによりロードされ、指定されたパッケージまたはそのサブパッケージのどれかに属するクラスが、デフォルトで有効なアサーションを保持する場合はtrue、デフォルトで無効なアサーションを保持する場合はfalse。public void setClassAssertionStatus(String className, boolean enabled)
指定されたクラスがトップ・レベルのクラスではない場合、この呼出しは、どのクラスのアサーション・ステータスに対しても影響を与えません。
className
- アサーション・ステータスを設定するトップ・レベルのクラスの完全指定クラス名。enabled
- 初期化時に、指定されたクラスでアサーションを有効にする場合はtrue、アサーションを無効にする場合はfalse。public void clearAssertionStatus()
バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.