Javaのオプション関数を使用してnull値の場合を処理する方法

王林
リリース: 2023-10-20 10:06:29
オリジナル
1260 人が閲覧しました

Javaのオプション関数を使用してnull値の場合を処理する方法

Java で Optional 関数を使用して null 値を処理する方法

Java プログラミングでは、null 値が処理される状況によく遭遇します。 Null ポインター例外は一般的なエラーです。この状況を回避するために、Java 8 では、null 値の状況を処理する Optional クラスが導入されました。 Optional クラスは、空でない値を含めることができる、または値を含めないコンテナー クラスです。

Optional クラスを使用すると、null 値の状況をよりエレガントに処理し、null ポインター例外を回避できます。以下では、Java で Optional 関数を使用して null 値の状況を処理する方法を紹介し、具体的なコード例を示します。

  1. オプション オブジェクトの作成
    Optional クラスを使用する場合は、まず Optional オブジェクトを作成する必要があります。 Optional オブジェクトは、Optional クラスの静的メソッドを呼び出すことによって作成できます。 Optional オブジェクトを作成するには、一般的に 3 つの方法が使用されます。
  • of メソッドの使用: of メソッドは、パラメータとして null 以外の値を受け取り、その値を含む Optional オブジェクトを返します。渡された値が null の場合、NullPointerException がスローされます。
  • ofNullable メソッドの使用: ofNullable メソッドはパラメータとして値を受け取り、その値を含む Optional オブジェクトを返します。渡された値が null の場合、空の Optional オブジェクト、つまり Optional.empty() が返されます。
  • 空のメソッドを使用する: 空のメソッドは空の Optional オブジェクトを返します。

以下は、Optional オブジェクトを作成するコード例です:

Optional<String> nonEmptyOptional = Optional.of("Hello");
Optional<String> nullableOptional = Optional.ofNullable(null);
Optional<String> emptyOptional = Optional.empty();
ログイン後にコピー
  1. Optional オブジェクトに値が含まれているかどうかを確認する
    Optional オブジェクトを扱うとき、多くの場合、 Optional オブジェクトに null 以外の値が含まれているかどうかを判断する必要があります。 isPresent メソッドを呼び出すことで、Optional オブジェクトに値が含まれているかどうかを確認できます。 isPresent メソッドはブール値を返します。Optional オブジェクトに null 以外の値が含まれる場合は true、それ以外の場合は false を返します。

以下は、Optional オブジェクトに値が含まれているかどうかを確認するコード例です。

Optional<String> optional = Optional.ofNullable("Hello");
if (optional.isPresent()) {
    System.out.println("Optional对象包含值");
} else {
    System.out.println("Optional对象不包含值");
}
ログイン後にコピー
  1. Get the value of the Optional object
    If the Optional object contains空ではない値。この値は get メソッドを呼び出すことで取得できます。 get メソッドは、Optional オブジェクトに含まれる値を返します。 Optional オブジェクトが空の場合、NoSuchElementException がスローされます。

NoSuchElementException のスローを回避するには、isPresent メソッドを使用して、Optional オブジェクトに null 以外の値が含まれているかどうかを判断し、get メソッドを呼び出して値を取得する前に判断します。

以下は、Optional オブジェクトの値を取得するコード例です:

Optional<String> optional = Optional.ofNullable("Hello");
if (optional.isPresent()) {
    String value = optional.get();
    System.out.println("获取到的值为:" + value);
} else {
    System.out.println("Optional对象不包含值");
}
ログイン後にコピー

ただし、Optional オブジェクトが空の場合、get メソッドを使用して値を取得することは安全ではありません。 、異常を投げます。したがって、より良いアプローチは、Consumer 関数インターフェイスをパラメーターとして受け取る ifPresent メソッドを使用することです。Optional オブジェクトに null 以外の値が含まれている場合、関数インターフェイスが呼び出されて値を処理します。

次は、ifPresent メソッドを使用して Optional オブジェクトの値を取得するコード例です。

Optional<String> optional = Optional.ofNullable("Hello");
optional.ifPresent(value -> System.out.println("获取到的值为:" + value));
ログイン後にコピー
  1. orElse メソッドを使用してデフォルト値を設定します。
    処理するときOptional オブジェクトでは、多くの場合、 を設定する必要があります。 Optional オブジェクトが空の場合、デフォルト値が使用されます。 orElse メソッドを使用してデフォルト値を設定できます。 orElse メソッドはパラメータとして値を受け取り、Optional オブジェクトが空の場合はその値を返します。

次に、orElse メソッドを使用してデフォルト値を設定するコード例を示します。

Optional<String> optional = Optional.ofNullable(null);
String value = optional.orElse("默认值");
System.out.println("获取到的值为:" + value);
ログイン後にコピー
  1. orElseGet メソッドを使用してデフォルト値を設定する
    さらにorElse メソッドを使用してデフォルト値を設定するだけでなく、orElseGet メソッドを使用することもできます。 orElse メソッドと比較して、orElseGet メソッドはパラメータとして Supplier 関数インターフェイスを受け取り、デフォルト値を返す get メソッドを定義します。 Optional オブジェクトが空の場合、この関数インターフェイスが呼び出され、デフォルト値を取得します。

以下は、orElseGet メソッドを使用してデフォルト値を設定するコード例です。

Optional<String> optional = Optional.ofNullable(null);
String value = optional.orElseGet(() -> {
    // 通过一些逻辑来计算默认值
    return "计算得到的默认值";
});
System.out.println("获取到的值为:" + value);
ログイン後にコピー
  1. map メソッドを使用して、Optional オブジェクトの値を変換します
    Optional オブジェクトを扱うとき、変換やフィルタリングなど、Optional オブジェクトの値に対していくつかの操作を実行する必要があることがよくあります。 Map メソッドを使用して、Optional オブジェクトの値を変換できます。 Map メソッドは、Function 関数インターフェイスをパラメータとして受け取り、Optional オブジェクトの値を変換するための apply メソッドを定義します。

次に、map メソッドを使用して Optional オブジェクトの値を変換するコード例を示します。

Optional<String> optional = Optional.ofNullable("Hello");
Optional<String> transformedOptional = optional.map(value -> value.toUpperCase());
transformedOptional.ifPresent(value -> System.out.println("转换后的值为:" + value));
ログイン後にコピー
  1. flatMap メソッドを使用して Optional オブジェクトを変換する
    Optional オブジェクトを扱う場合、Optional オブジェクトの値に基づいて新しい Optional オブジェクトを取得するなど、Optional オブジェクトの値に対してさらなる操作が必要になる場合があります。 flatMap メソッドを使用して、この機能を実現できます。 flatMap メソッドは、Function 関数インターフェイスをパラメータとして受け取ります。これは、Optional オブジェクトの値を変換し、新しい Optional オブジェクトを返す適用メソッドを定義します。

次は、 flatMap メソッドを使用して Optional オブジェクトを変換するコード例です。

Optional<String> optional = Optional.ofNullable("Hello");
Optional<String> flatMappedOptional = optional.flatMap(value -> {
    if (value.equals("Hello")) {
        return Optional.of("World");
    } else {
        return Optional.empty();
    }
});
flatMappedOptional.ifPresent(value -> System.out.println("转换后的值为:" + value));
ログイン後にコピー

总结
在Java编程中,处理空值情况是一个非常常见的需求。使用Optional函数可以更加优雅地处理空值情况,避免出现空指针异常。本文介绍了Javaのオプション関数を使用してnull値の場合を処理する方法,并提供了具体的代码示例。通过学习和使用Optional函数,可以使我们的代码更加安全和健壮。

以上がJavaのオプション関数を使用してnull値の場合を処理する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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