ホームページ  >  記事  >  Java  >  Java 8 のオプション クラス: flatMap() メソッドを使用して複数レベルのネストされた null 値を処理する方法

Java 8 のオプション クラス: flatMap() メソッドを使用して複数レベルのネストされた null 値を処理する方法

王林
王林オリジナル
2023-07-31 22:33:321468ブラウズ

Java 8 のオプション クラス: flatMap() メソッドを使用して、空の可能性がある多層のネストされた値を処理する方法

はじめに:
ソフトウェア開発では、次のような可能性がよくあります。処理の値が空の場合。以前は、オブジェクトが空かどうかをチェックするために if-else ステートメントを使用することもできましたが、このアプローチは冗長でエラーが発生しやすいものでした。 Java 8 では、オプションの非 null 値を含めることができるコンテナ オブジェクトである Optional クラスが導入されました。 Optional クラスを使用して、null の可能性のある値をより簡潔かつ安全に処理します。

Optional クラスの基本的な使い方:
まず、Optional クラスの基本的な使い方を理解しましょう。 Optional クラスは、値が存在するかどうかを判断し、値が存在する場合はその値を取得する方法を決定する一連のメソッドを提供します。

  • ofNullable(T value): Optional オブジェクトを作成します。指定された値が空の場合は、空の Optional オブジェクトが返されます。それ以外の場合は、指定された値を含む Optional オブジェクトが返されます。
  • isPresent(): Optional オブジェクトに値が含まれているかどうかを判断します。
  • get(): Optional オブジェクトの値を取得します。前提条件は、Optional オブジェクトに値が含まれていることを確認していることです。そうでない場合は、NoSuchElementException 例外がスローされます。
  • ifPresent(Consumer117c5a0bdb71ea9a9d0c2b99b03abe3e Consumer): Optional オブジェクトに値が含まれているかどうかを確認します。値が含まれている場合は、渡された Consumer を実行します。そうでない場合は、実行されません。
  • orElse(T other): Optional オブジェクトに値が含まれているかどうかを確認し、値が含まれている場合はその値を返し、そうでない場合は渡された他の値を返します。

上記の方法は、単純な状況を処理するのに十分です。ただし、複数レベルのネストされた null 値を扱う場合は、 flatMap() メソッドの使用が必要になる場合があります。

flatMap() メソッドの使用法:
flatMap() メソッドを使用すると、Optional オブジェクト内の別の Optional オブジェクトを変換できます。具体的には、Optional オブジェクトの値を処理して Optional オブジェクトを返したい場合は、 flatMap() メソッドを使用できます。以下は flatMap() メソッドのシグネチャーです:

public <U> Optional<U> flatMap(Function<? super T, Optional<U>> mapper)

このうち、マッパーは関数インターフェース (Function) であり、パラメーターとして値を受け取り、Optional オブジェクトを返します。 flatMap() メソッドは、返された Optional オブジェクトをフラット化し、最終的にはネストされていない Optional オブジェクトを返します。

以下では、例を使用して flatMap() メソッドの使用法を示します。

サンプル コード:
Order クラスがあり、このクラスには Optional オブジェクトを返す getCustomer() メソッドがあり、Customer クラスにも Optional オブジェクトを返す getAddress() メソッドがあり、 Address クラスには getCity () メソッドがあり、String 型の値を返します。

public class Order {
    private Optional<Customer> customer;

    public Optional<Customer> getCustomer() {
        return customer;
    }
}
public class Customer {
    private Optional<Address> address;

    public Optional<Address> getAddress() {
        return address;
    }
}
public class Address {
    private String city;

    public String getCity() {
        return city;
    }
}

次に、Order オブジェクトで都市名を取得したいと思います。この状況に対処するには、複数レベルのネストされた if-else ステートメントを使用できますが、 flatMap() メソッドを使用すると、コードをより簡潔でエレガントにすることができます。

Order order = new Order();
Optional<String> city = order.getCustomer()
        .flatMap(Customer::getAddress)
        .map(Address::getCity);

上記のコードでは、まず order.getCustomer() を通じて Optional オブジェクトを取得し、次に flatMap() メソッドを使用して Address オブジェクトを含む Optional オブジェクトを取得します。次に、map() メソッドを呼び出して Address オブジェクト内の都市名を取得し、最後に Optionalf7e83be87db5cd2d9a8a0b8117b38cd4 オブジェクトを取得します。

結論:
Java 8 の Optional クラスは、null 値の可能性を処理するための、より簡潔で安全かつ洗練された方法を提供します。 flatMap() メソッドを使用すると、複数レベルのネストされた null 値の可能性をより簡単に処理できます。コードの可読性と堅牢性を向上させるために、コード内で Optional クラスを使用することをお勧めします。

以上がJava 8 のオプション クラス: flatMap() メソッドを使用して複数レベルのネストされた null 値を処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。