激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

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

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九色精品国产 | 55夜色66夜色国产精品视频 | 精品一区二区三区欧美 | 色婷婷tv | 亚洲va久久久噜噜噜久久男同 | 久久久婷婷一区二区三区不卡 | 国产高清成人久久 | 欧美wwwsss9999| 亚洲精品欧美在线 | 毛片免费视频观看 | 免费黄色一级网站 | 国产亚洲精品网站 | 国产精品视频2021 | 最新午夜综合福利视频 | 国产精品美女一区二区 | 欧美成人三级视频 | 亚洲一区在线观看视频 | 欧美一级一区二区三区 | 国产91av视频 | 日本一区二区三区四区高清视频 | 国产精选91 | 亚洲精品久久久久久久久久久 | 国产成人免费高清激情视频 | 国产精品三级a三级三级午夜 | 午夜精品视频在线 | 欧美a∨一区二区三区久久黄 | av免费在线观看国产 | 在线免费观看日韩视频 | 男女羞羞视频在线观看免费 | 奶子吧naiziba.cc免费午夜片在线观看 | 国产亚洲高清在线精品不卡 | 国产亚洲精品久久久久久大师 | 日韩毛片在线看 | 精品一区二区三区在线视频 | 久久久久久久网站 | 亚洲欧美在线看 | 亚洲视屏在线 | 美女啪网站 | 电影一级毛片 | 少妇av片| 黄污网站在线观看 |