一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - Java8如何基于flatMap處理異常函數

Java8如何基于flatMap處理異常函數

2020-09-30 00:22賈樹丙 Java教程

這篇文章主要介紹了Java8如何基于flatMap處理異常函數,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

Java8flatMap函數,作用是:如果有值,為其執行mapping函數返回Optional類型返回值,否則返回空Optional。

見到的映射函數往往都只有一句話,連大括號都不需要加的,如下:

?
1
2
3
String personValue = Optional.ofNullable(map.get("person"))
    .flatMap(value -> Optional.of(value.toString().trim()))
    .orElse("");

可是如果映射函數里,可能會拋出異常,該怎么辦?

方法也是使用try/catch,但是一定要有返回值return,返回值類型是Optional。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
public static void main(String[] args) {
  Map<String, Object> map = new HashMap<>();
  String value = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
  System.out.println(value);
  map.put("time",value);
 
  //原來的實現方法是
  String timeValue = "";
  if(map.get("time") != null){
    try {
      Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(map.get("time").toString().trim());
      timeValue = new SimpleDateFormat("yyyy年MM月dd日").format(date);
    } catch (ParseException e) {
      e.printStackTrace();
    }
  }
  System.out.println(timeValue);
 
  //使用Java8的實現方法是
  String timeValue2 = Optional.ofNullable(map.get("time"))
      .flatMap(value2 -> {
        String ans = "";
        try {
          Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(value2.toString().trim());
          ans = new SimpleDateFormat("yyyy年MM月dd日").format(date);
        } catch (ParseException e) {
          e.printStackTrace();
        }
         return Optional.of(ans);
      }) .orElse("");
  System.out.println(timeValue2);
}

上訴方法中, 可以把flatMap改成map,但是返回值的類型就不能是Optional了。應該是返回的值會自動被包裝成Optional的。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
//使用Java8的實現方法是
String timeValue2 = Optional.ofNullable(map.get("time"))
    .map(value2 -> {
      String ans = "";
      try {
        Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(value2.toString().trim());
        ans = new SimpleDateFormat("yyyy年MM月dd日").format(date);
      } catch (ParseException e) {
        e.printStackTrace();
      }
       return ans;
    }) .orElse("");
System.out.println(timeValue2);

這樣看起來,使用lambda表達式,代碼并沒有優化多少啊?

應該是沒有了null的判斷,人們似乎很在意這個代碼中不能有null這個詞的說。

如果最后改成finally塊,IDEA會出現警告,雖然結果沒問題。這是因為finally塊中最好不能有返回值。

Java8如何基于flatMap處理異常函數

Reports finally blocks which can not complete normally.

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://www.cnblogs.com/acm-bingzi/p/javaFlatMap.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 美日韩一区二区三区 | 视频在线观看大片 | 色偷偷91久久综合噜噜噜 | 奶茶视频官网免费 | 免费成年人在线视频 | 国产在线三级 | 无遮挡免费h肉动漫在线观看 | 好紧好爽的午夜寂寞视频 | 亚洲va欧美va天堂v国产综合 | 日韩在线免费播放 | 国产japanese孕妇孕交 | 99视频九九精品视频在线观看 | 嫩草在线视频www免费观看 | 成人综合久久综合 | 99re8在这里只有精品2 | 国产精品www | 国产精品第页 | 97影院秋霞国产精品 | 国产在线精品香蕉综合网一区 | 夫妇野外交换激情 | 大胆国模一区二区三区伊人 | 国内精品福利丝袜视频_速 国内精品91久久久久 | 荡娃艳妇系列小说 | 四虎在线成人免费网站 | 暖暖 免费 高清 中文 日本 | 四大美女思春艳史片 | 亚洲成综合人影院在院播放 | 男人与雌性宠物交啪啪小说 | 成人观看免费观看视频 | 日韩激情视频在线观看 | 二次元美女扒开内裤露尿口 | jizz女16处 | 久久AV喷吹AV高潮欧美 | 日本黄色影院 | 天美传媒传媒免费观看 | 91精品国产高清久久久久久 | 日本最新免费二区 | 耽美肉文高h | 忘忧草在线社区WWW日本-韩国 | 久久热国产在线视频 | 色5月婷婷|