アサーションの重要な役割を理解するための実例はありますか?
アサーション(assertキーワードによる)は、Java 1.4で追加されました。 アサーションはコード内の不変性の正しさを検証するために使用されます。 これは、コード内の不変性の正しさを検証するために使用されます。プロダクションコードでは決して起動してはならず、バグやコードパスの誤用を示します。 これらは、javaコマンドの-eaオプションを使ってランタイムに有効にすることができますが、デフォルトではオンになっていません。
java
-ea
例を挙げます。
public Foo acquireFoo(int id) { Foo result = null; if (id > 50) { result = fooService.read(id); } else { result = new Foo(id); } assert result != null; return result; }
アサーションは、後条件と、絶対に失敗してはならない前条件をチェックするために使用されます。正しいコードはアサーションに失敗することはありませんが、アサーションが発生した場合にはバグを示すことになります(できれば実際の問題の発生場所に近い場所で)。
アサーションの例としては、特定のメソッド群が正しい順序で呼ばれているかどうかをチェックすることが挙げられます(たとえば、Iteratorにおいて、hasNext()がnext()の前に呼ばれているかどうかなど)。
Iterator
hasNext()
next()
スタッククラスでの実例(Assertion in Java Articlesより)。
public int pop() { // precondition assert !isEmpty() : "Stack is empty"; return stack[--num]; }
アサーション(assertキーワードによる)は、Java 1.4で追加されました。 アサーションはコード内の不変性の正しさを検証するために使用されます。 これは、コード内の不変性の正しさを検証するために使用されます。プロダクションコードでは決して起動してはならず、バグやコードパスの誤用を示します。 これらは、
java
コマンドの-ea
オプションを使ってランタイムに有効にすることができますが、デフォルトではオンになっていません。例を挙げます。
アサーションは、後条件と、絶対に失敗してはならない前条件をチェックするために使用されます。正しいコードはアサーションに失敗することはありませんが、アサーションが発生した場合にはバグを示すことになります(できれば実際の問題の発生場所に近い場所で)。
アサーションの例としては、特定のメソッド群が正しい順序で呼ばれているかどうかをチェックすることが挙げられます(たとえば、
Iterator
において、hasNext()
がnext()
の前に呼ばれているかどうかなど)。スタッククラスでの実例(Assertion in Java Articlesより)。