Javaのassert構文の使い方について教えてください。
Javaのアサートは、プログラムをテストおよびデバッグするためのメカニズムです。これにより、プログラマはコードにアサートステートメントを挿入し、プログラムの状態が期待どおりになっているかどうかを確認できます。
断定の文の文法は、
assert expression;
アサーション条件(expression)がtrueの場合、プログラムは何も起こらずに実行を続けます。アサーション条件がfalseの場合、プログラムはAssertionError例外をスローし、実行が終了します。
断定は次のいくつかの面で使用できます。
- アサーションの事前条件:コードにアサーション文を埋め込み、メソッドまたはコードブロックの前提条件が満たされているかどうかを確認します。前提条件が満たされていない場合、アサーションにより例外がスローされ、プログラムの不適切な実行が防止されます。
public void doSomething(int value) {
assert value > 0 : "Value must be positive";
// 继续执行其他代码
}
- メソッドやコードブロックの末尾にアサーション文を埋め込み、そのメソッドやコードブロックの後置条件が満たされているかどうかをチェックする。後置条件が満たされていない場合、アサーションは異常をスローしてプログラムのロジックに誤りがあることを示す。
public int divide(int dividend, int divisor) {
assert divisor != 0 : "Divisor cannot be zero";
// 执行除法运算并返回结果
}
- アサーション不変量:クラス内の各メソッドにアサーション文を挿入し、クラス不変量が壊れいるかどうかを検証する。アサーションが失敗した場合、クラスの状態が不正であることを示します。
public class Circle {
private double radius;
public Circle(double radius) {
assert radius > 0 : "Radius must be positive";
this.radius = radius;
}
public double getArea() {
assert radius > 0 : "Radius must be positive";
return Math.PI * radius * radius;
}
}
注意:標準状態では、Javaインタプリタはアサーションを禁止しています。アサーションを有効にするには、Javaプログラムの実行時に”-ea”パラメータを使用します。例:
java -ea MyProgram
-da オプションを使用してアサーションを無効にすることができます。
java -da MyProgram