日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

Java8 新特性 Optional

發(fā)布時間:2025/3/17 java 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java8 新特性 Optional 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1 package test; 2 3 import java.util.Optional; 4 5 import org.junit.Test; 6 /** 7 * Optional 類是一個可以為null的容器對象。 8 * 如果值存在則isPresent()方法會返回true,調(diào)用get()方法會返回該對象。 9 * 用于解決空指針異常 10 * @author xiaou 11 * 12 */ 13 public class TestA { 14 public static void main(String[] args) { 15 String name = null; 16 String tip ="對象為null"; 17 18 /* 19 * 判斷對象是否未空,如果為空則返回tip值 20 * orElse 和 orElseGet 區(qū)別 21 * orElse 是不管對象是不是null都會創(chuàng)建對象 22 * orElseGet 如果對象為null時才會創(chuàng)建對象 23 */ 24 String opt = Optional.ofNullable(name).orElse(tip); 25 // 參數(shù)是一個函數(shù)式接口 26 String opt2 = Optional.ofNullable(name).orElseGet(()->tip); 27 System.out.println(opt); 28 System.out.println(opt2); 29 } 30 @Test 31 public void test2test() { 32 String name = null; 33 String tip ="..."; 34 Optional<String> nullable = Optional.ofNullable(name); 35 // 如果不寫這條語句也有可能會造成空指針異常 36 if(nullable.isPresent()) { 37 System.out.println(nullable.get().length()); 38 } 39 40 //String opt = Optional.ofNullable(name).orElse(tip); 41 42 } 43 /** 44 * 返回異常 45 * 46 */ 47 @Test(expected = IllegalArgumentException.class) 48 public void test3test() { 49 String name = null; 50 String tip ="..."; 51 String nullable = Optional.ofNullable(name).orElseThrow(()->new IllegalArgumentException()); 52 System.out.println(nullable); 53 } 54 /** 55 * 過濾值 56 */ 57 @Test 58 public void test4test() { 59 String name = "26303qq.com"; 60 Optional<String> opt = Optional.ofNullable(name).filter((u)->u.contains("@")); 61 if (opt.isPresent()) 62 System.out.println(opt.get().toString()); 63 } 64 65 /** 66 * map 67 */ 68 @Test 69 public void test5test() { 70 User user = new User("xiaou", "2@qq.com"); 71 Optional<String>email = Optional.ofNullable(user).map(u->u.getEmail()); 72 System.out.println(email.get()); 73 } 74 /* 75 * flatMap與map(Function)非常類似,區(qū)別在于傳入方法的lambda表達(dá)式的返回類型。 76 * map方法中的lambda表達(dá)式返回值可以是任意類型,在map函數(shù)返回之前會包裝為Optional。 77 * 但flatMap方法中的lambda表達(dá)式返回值必須是Optionl實例。 78 */ 79 /** 80 * flatmap 81 */ 82 @Test 83 public void test6test() { 84 User user = new User("xiaou", "2@qq.com"); 85 // 第一種 86 Optional<String>email = Optional.ofNullable(user).flatMap(u->Optional.of(u.getEmail())); 87 // 第二種 在user對象中添加一個方法 返回Option對象 88 Optional<String>email2 = Optional.ofNullable(user).flatMap(User::getOptionalByEmail); 89 System.out.println(email.orElse("ss")); 90 System.out.println(email2.get()); 91 } 92 93 94 } 1 package test; 2 3 import java.util.Optional; 4 5 public class User { 6 private String name; 7 private String email; 8 9 public User() { 10 super(); 11 } 12 public User(String name, String email) { 13 super(); 14 this.name = name; 15 this.email = email; 16 } 17 public String getName() { 18 return name; 19 } 20 public void setName(String name) { 21 this.name = name; 22 } 23 public String getEmail() { 24 return email; 25 } 26 public void setEmail(String email) { 27 this.email = email; 28 } 29 30 public Optional<String> getOptionalByEmail(){ 31 return Optional.ofNullable(email); 32 } 33 } View Code

?

轉(zhuǎn)載于:https://www.cnblogs.com/FlyBlueSky/p/9704140.html

總結(jié)

以上是生活随笔為你收集整理的Java8 新特性 Optional的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。