Java
 Computer >> コンピューター >  >> プログラミング >> Java

【Java】事前条件チェック:リストがnullまたは空でないことを確認する方法


事前条件(Precondition)とは、メソッドが正しく動作するために、渡された引数が満たしているべき条件のことです。ここでは、パラメータとして渡されたリストがnullまたは空(要素数ゼロ)でないことを確認する例を見ていきましょう。

サンプルコード

public void my_fun(List<Object> myList){
   if (myList == null){
      throw new IllegalArgumentException("List is null");
   }
   if (myList.isEmpty()){
      throw new IllegalArgumentException("List is empty");
   }
   my_fun(myList);
}

コードの解説

このコードでは、List<Object> 型のリストを引数として受け取る my_fun という void 型のメソッドを定義しています。

  • nullチェック: リストが null の場合は IllegalArgumentException をスローし、「List is null」というメッセージで呼び出し元に問題を通知します。
  • 空チェック: isEmpty() メソッドを使ってリストに要素が含まれているかを確認し、空の場合も同様に例外をスローしてメッセージを表示します。
  • これらのチェックをすべて通過した場合のみ、実際の処理(この例では自分自身を再帰的に呼び出しています)へ進みます。

このように、メソッドの本処理を実行する前に引数の妥当性を検証する仕組みが「事前条件」です。不正な入力を早期に検出することで、後続の処理での予期しないエラーやバグを防ぐことができます。

より簡潔な書き方:Objects.requireNonNull

Java 7以降では、標準ライブラリの java.util.Objects.requireNonNull() を利用することで、nullチェックをより簡潔に記述できます。

import java.util.Objects;

public void my_fun(List<Object> myList){
   Objects.requireNonNull(myList, "List is null");
   if (myList.isEmpty()){
      throw new IllegalArgumentException("List is empty");
   }
   // 実際の処理
}

まとめ

事前条件チェックをメソッドの冒頭に記述しておくことで、不正な引数によるトラブルを未然に防げます。「失敗は早く(Fail Fast)」の原則に従い、問題のあるデータは処理の入口で確実に検出・通知するのが、堅牢なJavaプログラムを書くための基本です。

  1. JavaでArrayListから重複要素を削除する方法【SetとStream API】

    この記事では、JavaのArrayListから重複する要素を削除する方法を、具体的なコード例とともにわかりやすく解説します。代表的な2つのアプローチを紹介するので、目的や使用しているJavaのバージョンに応じて使い分けてください。 ArrayListから重複する文字列を削除する Setインターフェースには「重複した要素を保持できない」という特性があります。この特性を利用して、重複を含むArrayListを引数としてSetオブジェクトを生成すれば、手軽に重複を除去できます。 ポイントはLinkedHashSetを使うことです。通常のHashSetではなくLinkedHashSetを採用することで

  2. JavaでArrayListをループ処理する5つの方法を徹底解説

    このチュートリアルでは、JavaでArrayListを反復処理(イテレーション)する5つの異なる方法を紹介します。Java 8以降では、forEachメソッドやIteratorクラスを使ってArrayListをループ処理することも可能です。 ArrayListをループ処理する主な方法 ArrayListをループ処理する方法は、主に以下の5つがあります。 従来のfor文(クラシックForループ) 拡張for文 Iterator(イテレータ) while文 forEachメソッド(Java 8) まずは、各ループの例で使用するArrayListを作成しましょう。 import java.uti