ホームページ > Java > &#&チュートリアル > Java8 新機能の使い方の紹介 (オプション) (コード付き)

Java8 新機能の使い方の紹介 (オプション) (コード付き)

不言
リリース: 2019-04-13 11:55:48
転載
4821 人が閲覧しました

この記事では、Java8 の新機能 Optional (コード付き) の使い方を紹介します。一定の参考価値があります。必要な友人は参考にしてください。お役に立てれば幸いです。 . 助かりました。

Optional クラス (java.util.Optional) は、値の有無を表すコンテナ クラスです。元々は値の有無を表すために null が使用されていましたが、現在は Optional でより適切に表現できます。このコンセプト。また、null ポインタ例外を回避できます。

1, of

null 以外の値のオプションを作成します。値が null の場合、NullPointerException がスローされます。

Optional<Integer> optional = Optional.of(13);
System.out.println(optional)
ログイン後にコピー

2, ofNullable

指定された値のオプションを作成するか、指定された値が null の場合は空のオプションを返します。

Optional<String> optional2 = Optional.ofNullable(null);
System.out.println(optional2);
optional2 = Optional.ofNullable("aaa");
System.out.println(optional2);
ログイン後にコピー

3.isPresent

値が存在する場合は true を返し、それ以外の場合は false を返します。

Optional<String> optional2 = Optional.ofNullable(null);
System.out.println(optional2);
System.out.println(optional2.isPresent());

optional2 = Optional.ofNullable("aaa");
System.out.println(optional2);
System.out.println(optional2.isPresent());
ログイン後にコピー

4, get

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

optional2 = Optional.ofNullable("aaa");
System.out.println(optional2);
System.out.println(optional2.isPresent());
System.out.println(optional2.get());
ログイン後にコピー

5. ifPresent

Optional インスタンスに値がある場合は、その値のコンシューマーを呼び出します。そうでない場合は、処理は行われません。隠者は彼らの中で無効な判断を下した。

public static void main(String[] args) {
    String str1 = "hello";
    String str2 = null;
    Optional<String> optional1 = Optional.ofNullable(str1);
    Optional<String> optional2 = Optional.ofNullable(str2);

    optional1.ifPresent(str->System.out.println(str.length()));
    optional2.ifPresent(str-> System.out.println(str.length()));
}
ログイン後にコピー

6, orElse

値がある場合はそれを返し、そうでない場合は指定された他の値を返します。

public static void main(String[] args) {
    String str1 = "hello";
    String str2 = null;
    Optional<String> optional1 = Optional.ofNullable(str1);
    Optional<String> optional2 = Optional.ofNullable(str2);
    System.out.println(optional1.orElse("默认字符串"));
    System.out.println(optional2.orElse("默认字符串"));
}
ログイン後にコピー

7、orElseGet

orElseGet は orElse メソッドに似ていますが、違いは取得されるデフォルト値にあります。 orElse メソッドは、受信した値をデフォルト値として受け取ります。orElseGet メソッドは、Supplier インターフェイスの実装を受け入れて、デフォルト値

public static void main(String[] args) {
    Integer i = 20;
    Optional<Integer> op = Optional.ofNullable(i);
    System.out.println(op.orElseGet(()->0));
    System.out.println(Optional.ofNullable(null).orElseGet(()->0));
}
ログイン後にコピー

8 を生成することができます。値がある場合は、orElseThrow

それが返されます。それ以外の場合は、サプライヤー インターフェイスによって作成された例外がスローされます。

public static void main(String[] args) {
    // 自己指定异常
    System.out.println((Optional.ofNullable("a").orElseThrow(()->new IndexOutOfBoundsException())));
    System.out.println((Optional.ofNullable(null).orElseThrow(()->new IndexOutOfBoundsException())));
}
ログイン後にコピー

9, map

map は、値がある状況を処理します。値がある場合は、map パラメータの関数を実行して戻り値を取得します。それ以外の場合は、空の値を返します。オプション。

public static void main(String[] args) {
   List<String> list = new ArrayList<String>(){
       {
            add("aaa");
            add("bbb");
            add(null);
       }
   };

   list.stream().forEach(temp ->{
        Optional<String> opt = Optional.ofNullable(temp);
        System.out.println(opt.map(n -> {
           return n.toUpperCase();
        }).orElse("Nothing"));
   });

   // 简写为如下形式
    list.stream().forEach(temp->{
        System.out.println(Optional.ofNullable(temp).map(n->n.toUpperCase()).orElse("Nothing"));
    });
}
ログイン後にコピー

10. flatMap

値がある場合はマッピング関数を実行して Optional 型の戻り値を返し、それ以外の場合は空の Optional を返します。 flatMap は、map(Funtion) メソッドに似ていますが、 flatMap のマッパーの戻り値が Optional である必要がある点が異なります。呼び出しの終了時に、 flatMap は結果を Optional でカプセル化しません。 content

public static void main(String[] args) {
    Optional<String> opt1 = Optional.ofNullable("aaa");
    Optional<String> opt2 = Optional.ofNullable(null);
    System.out.println(opt1.flatMap(n->{
        return Optional.ofNullable(n.toUpperCase());
    }).orElse("还会没有吗"));

    System.out.println( opt2.flatMap(n->{
        return Optional.ofNullable(n.toUpperCase());
    }).orElse("还会没有吗"));
}
ログイン後にコピー

11、filter

を追加できます。値があり、アサーション条件が満たされている場合は、その値を含む Optional が返され、それ以外の場合は空の Optional が返されます。

public static void main(String[] args) {
    Optional<String> opt1 = Optional.ofNullable("aabbbbaa");
    Optional<String> opt2 = Optional.ofNullable(null);

    System.out.println(opt1.filter(value->value.length()>6));
    System.out.println(opt2.filter(value->value.length()>6));
}
ログイン後にコピー

さて、ここで Java8 の新機能である Optional が紹介されます。

以上がJava8 新機能の使い方の紹介 (オプション) (コード付き)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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