Java アサーション

WBOY
リリース: 2024-08-30 16:05:04
オリジナル
856 人が閲覧しました

Java では、アサーションは、プログラム内で行われた仮定の正しさを保証またはテストするステートメントです。これは、assert ステートメントを使用して行われます。書かれた仮定が実行されると、それは真実とみなされます。 false の場合、Java 仮想マシンによってアサーション エラーがスローされます。

無料ソフトウェア開発コースを始めましょう

Web 開発、プログラミング言語、ソフトウェア テスト、その他

アサーションが使用される主な理由は次のとおりです。

  • 到達不能なコードが到達可能かどうかを確認するため。
  • コメント内の仮定が正しいかどうかを確認するため。
  • 確認しますが、スイッチのデフォルトのケースには達していません。
  • メソッドの呼び出し後。
  • オブジェクトの状態を確認します。

構文

以下は Java Assertion ステートメントの構文です。

assert expression;
ログイン後にコピー
assert expr1 : expr2;
ログイン後にコピー

要件に基づいて、これらの構文のいずれかを使用できます。

Java ではアサーションはどのように機能しますか?

すでに述べたように、assert は 2 つの形式で記述できます。

  • 構文は式をアサートします。ブール形式の式をテストするために使用されます。特定の式が false の場合、プログラムは AssertionError をスローして終了します。通常の例外とは異なり、これらのエラーは実行時に無効になります。
  • ただし、構文は expr1: expr2; をアサートします。これは、特定の障害の診断に役立つ追加情報がプログラムに含まれている場合に使用されます。
  • Java のキャッチされなかった例外と同様に、アサーション エラーは通常、ファイルおよび例外がスローされた行番号とともにスタック トレースにラベル付けされます。

これらがアサーションの主な長所ですが、アサーションを使用すべきではない特定の状況があります。それらは次のとおりです:

  • エラーメッセージの置き換え
  • パブリックメソッドの引数チェック
  • コマンドライン引数。
注: コードをコンパイルする前に、アサーションが有効になっていることを確認してください。

構文

java –ea programname
ログイン後にコピー

または

java –enable assertions programname
ログイン後にコピー

Eclipse Java アサーションを使用する手順

Eclipse では、以下の手順を使用して実行できます。

ステップ 1: [実行構成] を選択します。

Java アサーション

ステップ 2: 左側のパネルに移動して Java アプリケーションを選択し、それを右クリックします。

Java アサーション

ステップ 3: 新しい構成を選択し、VM 引数に –ea と入力します。完了したら、クリックします。

Java アサーション

同様に、以下の構文を使用してアサーションを無効にすることができます。 Java -da プログラム名

Java アサーションの実装例

ここで、アサーションを明確に理解するために、アサーションのサンプル プログラムをいくつか見てみましょう。

例 #1

特定の値が 20 より大きいかどうかを確認する Java プログラム。

コード:

class AssertionExample{
public static void main( String args[] ){
int val = 14;
assert val>=20:" Value is not valid";
System.out.println("The given value is: "+ val);
}
}
ログイン後にコピー

出力:

  • コードを実行すると、「指定された値は 14 です」というメッセージが表示されます。

Java アサーション

  • 値が 20 より大きい場合はチェックされないため、ここではアサーションがチェックされていないことが明らかにわかります。
  • アサーションを有効にするには、コンパイル前に -ea を設定する必要があります。そのためには、注に記載されている手順を実行してください。
  • もう一度コードを実行しようとすると、値が 20 未満であるため、AssertionError がスローされたことがはっきりとわかります。

Java アサーション

例 #2

特定のユーザー入力値が 20 より大きいかどうかを確認する Java プログラム。

コード:

import java.util.Scanner;
class AssertionExample{
public static void main( String args[] ){
Scanner <u>sc</u> = new Scanner( System.in );
System.out.print("Enter a number to check assertion ");
//store the input value to the variable <u>val</u>
int val = sc.nextInt();
//assertion check whether the input value is greater than 20
assert val>=20:" Value is not valid";
System.out.println("The given value is: "+ val);
}
}
ログイン後にコピー

出力:

  • ユーザーはコードを実行する際に番号の入力を求められます。以下の結果では、数値 13 が入力として与えられています。 20未満なのでAssertionErrorがスローされています。

Java アサーション

  • 同時に、20 より大きい値が指定された場合、エラーはスローされず、メッセージが表示されます。

Java アサーション

例 #3

一週間の日数を確認する Java プログラム。

コード:

class AssertionExample {
//main method
public static void main(String args[]) {
//declare a string days
String[] days = {" Monday " , " Holiday " , " Saturday " , " Tuesday " , " Wednesday " , " Sunday " , " Thursday " , " Friday " };
//set the assertion as 7
assert days.length==7 : "7 days are present in a week, Your input is wrong";
//print the line below
System.out.println("There are " + days.length + "  days in a week");
}
}
ログイン後にコピー

出力:

  • コードを実行すると、1 週間の日数が 7 であり、指定された文字列入力にはそれ以上の日数が含まれているため、アサーション エラーがスローされます。

Java アサーション

  • 入力値から Holiday を削除し、出力がどのようになるかを見てみましょう。

Java アサーション

はい。アサーション値が入力値を満たすと、この行が出力されます。

Java でアサーションを使用する利点

アサーションを使用する主な利点は次のとおりです。

  • バグの効率的な検出と修正。
  • ボイラープレート コードは削除され、読みやすいコードの作成に役立ちます。
  • 実行時に自動的に削除されるため、実行時間には影響しません。
  • 迅速なバグの検出と修正。
  • コードの最適化とリファクタリングは、正しく機能するために高い信頼性を持って行われます。

上記の点に加えて、アサーションを学習する際に知っておく必要がある重要な点を以下に示します。

  • Java のアサーションはバージョン JDK 1.4 で導入されました
  • Assert は、アサーションを実装するために使用されるキーワードです。
  • アサーションの有効化と無効化は、対応する構文を使用して実行時に行うことができます。
  • アサーションは例外を補完しますが、例外を置き換えるものではありません。
  • 条件の検証に役立つ場合でも、単体テストに代わるものではありません。
  • パブリックなメソッドの引数またはパラメーターの検証にはアサーションを使用しないでください。

結論

Java アサーションは、特定の条件の真偽をチェックするステートメントです。ソフトウェア開発時のテストでよく使用されます。さらに、これらは特定のブール式とともに使用されます。この記事では、構文、動作、長所、短所、アサーションの例などのいくつかの側面について詳しく説明します。

以上がJava アサーションの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート