欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Java8新特性O(shè)ptional有哪些用法-創(chuàng)新互聯(lián)

今天小編給大家分享的是Java8新特性O(shè)ptional有哪些用法,相信很多人都不太了解,為了讓大家更加了解Optional,所以給大家總結(jié)了以下內(nèi)容,一起往下看吧。一定會(huì)有所收獲的哦。

創(chuàng)新互聯(lián)是一家專注于網(wǎng)站制作、成都網(wǎng)站建設(shè)與策劃設(shè)計(jì),昌吉網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十年,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:昌吉等地區(qū)。昌吉做網(wǎng)站價(jià)格咨詢:13518219792

Optional<T>類(java.util.Optional)是一個(gè)容器類,代表一個(gè)值存在或不存在,原來(lái)用null表示一個(gè)值不存在,現(xiàn)在Optional可以更好的表達(dá)這個(gè)概念。并且可以避免空指針異常。

1、of

為非null的值創(chuàng)建一個(gè)Optional,如果值為null,則會(huì)拋出NullPointerException

Optional<Integer> optional = Optional.of(13);
System.out.println(optional)
2、ofNullable

為指定的值創(chuàng)建一個(gè)Optional,如果指定的值為null,則返回一個(gè)空的Optional。

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實(shí)例有值則為其調(diào)用consumer,否則不做處理 。隱士地其中進(jìn)行了null判斷。

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("默認(rèn)字符串"));
    System.out.println(optional2.orElse("默認(rèn)字符串"));
}
7、orElseGet

orElseGet與orElse方法類似,區(qū)別在于得到的默認(rèn)值。orElse方法將傳入的一個(gè)值作為默認(rèn)值,orElseGet方法可以接受Supplier接口的實(shí)現(xiàn)用來(lái)生成默認(rèn)值

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

如果有值則將其返回,否則拋出supplier接口創(chuàng)建的異常。

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處理有值的情況,如果有值,則對(duì)其執(zhí)行調(diào)用map參數(shù)中的函數(shù)得到返回值,否則返回空Optional。

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"));
   });

   // 簡(jiǎn)寫為如下形式
    list.stream().forEach(temp->{
        System.out.println(Optional.ofNullable(temp).map(n->n.toUpperCase()).orElse("Nothing"));
    });
}
10、flatMap

如果有值,為其執(zhí)行mapping函數(shù)返回Optional類型返回值,否則返回空Optional。flatMap與map(Funtion)方法類似,區(qū)別在于flatMap中的mapper返回值必須是Optional。調(diào)用結(jié)束時(shí),flatMap不會(huì)對(duì)結(jié)果用Optional封裝。 可以將內(nèi)容

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("還會(huì)沒(méi)有嗎"));

    System.out.println( opt2.flatMap(n->{
        return Optional.ofNullable(n.toUpperCase());
    }).orElse("還會(huì)沒(méi)有嗎"));
}
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新特性O(shè)ptional有哪些用法的簡(jiǎn)略介紹,當(dāng)然詳細(xì)使用上面的不同還得要大家自己使用過(guò)才領(lǐng)會(huì)。如果想了解更多,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道哦!

文章標(biāo)題:Java8新特性O(shè)ptional有哪些用法-創(chuàng)新互聯(lián)
當(dāng)前URL:http://chinadenli.net/article48/dhpghp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)、網(wǎng)站設(shè)計(jì)公司、網(wǎng)站設(shè)計(jì)、定制網(wǎng)站、響應(yīng)式網(wǎng)站外貿(mào)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

綿陽(yáng)服務(wù)器托管