Java 2 SDK 開発ガイド (Solaris 編)

アサーションの有効化および無効化

デフォルトでは、アサーションは無効になっています。ここで説明する 2 つのコマンド行スイッチを使用すると、アサーションを有効または無効に設定できます。

次のスイッチは、アサーションを様々なレベルで有効にします。


java [ -enableassertions | -ea  ] [:<package name>"..." | :<class name> ]

引数を指定しない場合、アサーションはデフォルトで有効になります。「...」で終了する引数を 1 つ指定した場合、指定されたパッケージおよびそのサブパッケージにおいて、アサーションはデフォルトで有効になります。引数が「...」だけである場合、現在の作業用ディレクトリにある名前のないパッケージにおいて、アサーションは有効になります。「...」で終了しない引数を 1 つ指定した場合、指定されたクラスにおいて、アサーションは有効になります。

同様に、次のスイッチはアサーションを無効にします。


java [ -disableassertions | -da ] [:<package name>"..." | :<class name> ]

これらのスイッチの複数のインスタンスを単一のコマンド行に指定した場合、最初にこれらのスイッチが指定された順番どおりに処理されて、その後で任意のクラスがロードされます。たとえば、プログラムを実行するときに、パッケージ com.wombat.fruitbat (およびそのサブパッケージ) 内だけでアサーションを有効にするには、次のコマンドを使用します。


java -ea:com.wombat.fruitbat...  <Main class>

プログラムを実行するときに、パッケージ com.wombat.fruitbat ではアサーションを有効にするが、クラス com.wombat.fruitbat.Brickbat ではアサーションを無効にするには、次のコマンドを使用します。


java -ea:com.wombat.fruitbat... -da:com.wombat.fruitbat.Brickbat <class>

上記スイッチはすべてのクラスローダおよび (クラスローダを持たない) システムクラスに適用されます。この規則には例外が 1 つあります。引数を指定しない場合、このスイッチはシステムクラスには適用されません。 これによって、システムクラスを除くすべてのクラスでアサーションを有効にすることが簡単になります。すべてのシステムクラスでアサーションを有効にする (つまり、システムクラスのデフォルトのアサーション状態を true に設定する) には、次のスイッチを使用します。


 java [ -enablesystemassertions | -esa ]

逆に、すべてのシステムクラスでアサーションを無効にするには、次のスイッチを使用します。


java [ -disablesystemassertions | -dsa ]