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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

JDK8的新特性

發布時間:2025/3/20 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JDK8的新特性 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

JDK8的新特性

這兩天開始看jdk8的新特性,先看了Lembda表達式和Stream,就一個感覺,優雅。
趕緊將這兩天的成果總結一下

一、Lembda表達式

Lembda表達式格式

lembda表達式是一個簡潔、可傳遞的匿名函數,實現了把代碼塊賦值給一個變量的功能

格式就是 (parameters) -> expression ,需要注意的是:

  • 參數可以為空 ()->xxx
  • 參數為一個值得時候,可以省略參數的括號 x->xxx
  • 表達式只有一行的時候不需要;,有多行的時候需要加上;
  • 表達式可以是一個數字(直接返回這個數字),一個算式;可以是普通的一個語句(無返回,相當于void)
  • 參數的名不能和局部變量相同
  • 表達式中直接調用的變量(不是傳入的),必須是顯示聲明為final或事實上的final類型
  • 函數式接口

    lambda表達式的使用需要借助于函數式接口
    含有且僅含有一個抽象方法的接口被稱為函數式接口
    需要注意的是,default關鍵字可以在接口中定義實現,如果一個接口含有多個實現但是只有一個抽象方法,那么它也屬于函數式接口

    自定義函數式接口

    一般用@FunctionInterface對函數式接口來進行語義化標注

    步驟:

  • 定義一個函數式接口
  • @FunctionalInterfacepublic interface Append {int append(int a,int b);} public static void main(String[] args) {//對這個接口的抽象方法進行實現,并用該接口進行接收Append append = ((a, b) -> a + b);//調用這個方法int result = append.append(1, 2);System.out.println("result = "+result);}
  • 對這個接口的抽象方法進行實現,并用該接口進行接收,
  • 調用這個方法
  • 結果: result = 3

    JDK自帶的函數式接口

  • Predicate
    進行判斷
    boolean test(T t);
    利用我們在外部設定的條件對于傳入的參數進行校驗并返回驗證通過與否
  • Consumer
    消費者 void accept(T t);
    接收參數并依據傳遞的行為應用傳遞的參數值
  • Function
    R apoly(T t);
    執行轉換操作,輸入類型 T 的數據,返回 R 類型的結果
  • 這三個是最重要的接口,其他的接口都是從這三個接口演化而來,下面我強行使用這三個接口

    /*Predicate<T> 判斷*/Predicate<String> stringPredicate = str -> StringUtils.isBlank(str) || "error".equalsIgnoreCase(str);/*Consumer<T>*/Consumer<String> stringConsumer = str -> {if (StringUtils.isBlank(str) || "error".equalsIgnoreCase(str)) {System.out.println("Consumer失敗");}};/*Function<T,R>*/Function<String, String> stringStringFunction = str -> {if (StringUtils.isBlank(str) || "error".equalsIgnoreCase(str)) {return "Function失敗";} else {return "Function成功";}};String in = "error";if (stringPredicate.test(in)) {System.out.println("Predicate失敗");}stringConsumer.accept(in);System.out.println(stringStringFunction.apply(in));

    方法引用

    在表達式中,可以使用::更方便的調用方法,它會自動將參數傳入,并且將返回值返回
    比如
    System.out.println(傳入參數)可以轉換為System.out::println
    表達式只需要調用一個方法就可以完成功能的時候,可以用這種方法來進一步簡化代碼;

    總結

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

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。