Java8-optional-class

提供:Dev Guides
移動先:案内検索

Java 8-オプションのクラス

オプションは、null以外のオブジェクトを含むために使用されるコンテナオブジェクトです。 オプションのオブジェクトは、値が存在しない場合にnullを表すために使用されます。 このクラスには、null値をチェックする代わりに、値を「使用可能」または「使用不可」として処理するコードを容易にするさまざまなユーティリティメソッドがあります。 これはJava 8で導入され、グアバのオプションと似ています。

クラス宣言

以下は java.util.Optional <T> クラスの宣言です-

public final class Optional<T> extends Object

クラスメソッド

Sr.No. Method & Description
1

static <T> Optional<T> empty()

空のOptionalインスタンスを返します。

2

boolean equals(Object obj)

他のオブジェクトがこのオプションと「等しい」かどうかを示します。

3

Optional<T> filter(Predicate<? super <T> predicate)

値が存在し、その値が特定の述語と一致する場合、値を説明するOptionalを返し、そうでない場合は空のOptionalを返します。

4

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

値が存在する場合は、提供されたオプション軸受マッピング関数をその値に適用し、その結果を返します。それ以外の場合は空のオプションを返します。

5

T get()

このOptionalに値が存在する場合は値を返し、そうでない場合はNoSuchElementExceptionをスローします。

6

int hashCode()

存在する場合は現在の値のハッシュコード値を返します。値が存在しない場合は0(ゼロ)を返します。

7

void ifPresent(Consumer<? super T> consumer)

値が存在する場合、指定されたコンシューマーをその値で呼び出します。それ以外の場合は何もしません。

8

boolean isPresent()

値が存在する場合はtrue、そうでない場合はfalseを返します。

9

<U>Optional<U> map(Function<? super T,? extends U> mapper)

値が存在する場合、提供されたマッピング関数をその値に適用し、結果がnullでない場合、結果を説明するOptionalを返します。

10

static <T> Optional<T> of(T value)

指定された現在のnull以外の値でOptionalを返します。

11

static <T> Optional<T> ofNullable(T value)

null以外の場合、指定された値を記述するOptionalを返します。それ以外の場合、空のOptionalを返します。

12

T orElse(T other)

存在する場合は値を返し、そうでない場合はその他を返します。

13

T orElseGet(Supplier<? extends T> other)

値が存在する場合はそれを返し、そうでない場合は他を呼び出し、その呼び出しの結果を返します。

14

<X extends Throwable> T orElseThrow(Supplier<? extends X> exceptionSupplier)

含まれている値が存在する場合はそれを返し、そうでない場合は提供されたサプライヤによって作成される例外をスローします。

15

String toString()

デバッグに適したこのオプションの空でない文字列表現を返します。

このクラスは、次のクラスからメソッドを継承します-

  • java.lang.Object

オプションの例

C:\> JAVAなどで選択した任意のエディターを使用して、次のJavaプログラムを作成します。

Java8Tester.java

import java.util.Optional;

public class Java8Tester {

   public static void main(String args[]) {
      Java8Tester java8Tester = new Java8Tester();
      Integer value1 = null;
      Integer value2 = new Integer(10);

     //Optional.ofNullable - allows passed parameter to be null.
      Optional<Integer> a = Optional.ofNullable(value1);

     //Optional.of - throws NullPointerException if passed parameter is null
      Optional<Integer> b = Optional.of(value2);
      System.out.println(java8Tester.sum(a,b));
   }

   public Integer sum(Optional<Integer> a, Optional<Integer> b) {
     //Optional.isPresent - checks the value is present or not

      System.out.println("First parameter is present: " + a.isPresent());
      System.out.println("Second parameter is present: " + b.isPresent());

     //Optional.orElse - returns the value if present otherwise returns
     //the default value passed.
      Integer value1 = a.orElse(new Integer(0));

     //Optional.get - gets the value, value should be present
      Integer value2 = b.get();
      return value1 + value2;
   }
}

結果を確認する

次のように javac コンパイラを使用してクラスをコンパイルします-

C:\JAVA>javac Java8Tester.java

次のようにJava8Testerを実行します-

C:\JAVA>java Java8Tester

それは次の出力を生成する必要があります-

First parameter is present: false
Second parameter is present: true
10