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

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

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

服務器之家 - 編程語言 - Java教程 - Java 8新特性 內建函數式接口詳解

Java 8新特性 內建函數式接口詳解

2020-07-09 11:11MPPC Java教程

這篇文章主要介紹了Java 8新特性 內建函數式接口詳解的相關資料,這里主要介紹4個基本函數式接口,需要的朋友可以參考下

Java 8新特性內建函數式接口

  在之前的一片博文 Lambda 表達式,提到過Java 8提供的函數式接口。在此文中,將介紹一下Java 8四個最基本的函數式接口

  對于方法的引用,嚴格來講都需要定義一個接口。不管我們如何操作實際上有可能操作的接口只有四種。

  Java 8 提供了函數式接口包java.util.function.*,在該包下有許多Java 8內建的函數式接口。不過基本上分為四種基本的:

功能型接口 (Function)

將 T 作為輸入,返回 R 作為輸出,他還包含了和其他函數組合的默認方法。

?
1
2
3
4
5
6
7
@FunctionalInterface
public interface Function<T, R> {
 
  R apply(T t);
 
}

示例代碼

?
1
2
3
4
5
6
7
8
  
public static void main(String[] args) {
    
    // 這里用到了Java8的 方法引用,功能型函數式接口!
    Function<String,Boolean> function = "Hello Java" :: endsWith;
    System.out.println(function.apply("Java"));
}

 消費型接口 (Consumer)  

 將 T 作為輸入,不返回任何內容,表示在單個參數上的操作。

?
1
2
3
4
5
6
7
@FunctionalInterface
public interface Consumer<T> {
 
  void accept(T t);
 
}

示例代碼

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class TestDemo{
  //此方法沒有返回值,但是有輸入參數
  public void fun(String str){
    System.out.println(str);
  }
}
 
 
public class TestFunctional {
  public static void main(String[] args) {
    TestDemo demo = new TestDemo();
    //消費型接口,只有輸入參數,沒有輸出參數
    Consumer<String> consumer = demo :: fun;
    consumer.accept("");
 
  }
}
 
<br>

供應型接口 (Supplier)

 沒有輸入參數,只有T返回輸出

?
1
2
3
4
5
6
@FunctionalInterface
public interface Supplier<T> {
 
  T get();
 
}

 示例代碼

?
1
2
3
4
5
6
7
8
public class TestFunctional {
  public static void main(String[] args) {
 
    //供應商類型接口,只有輸出參數,沒有輸入參數!
    Supplier<String> supplier = "java 8" :: toUpperCase;
    System.out.println(supplier.get());
  }
}

斷言型接口 (Predicate)

將 T 作為輸入,返回一個布爾值作為輸出,該接口包含多種默認方法來將 Predicate 組合成其他復雜的邏輯(與、或、非)。

?
1
2
3
4
5
6
7
@FunctionalInterface
public interface Predicate<T> {
 
  boolean test(T t);
 
}

示例代碼

?
1
2
3
4
5
6
7
8
9
  public class TestFunctional {
  public static void main(String[] args) {
    
    //斷言類型接口。有輸入參數,輸出參數為布爾值
    Predicate<String> predicate = "Android" :: equalsIgnoreCase;
    System.out.println(predicate.test("android"));
    
  }
}
   

  所以在Java 8中由于存在有以上的四個功能型接口,所以一般很少會由用戶去定義新的函數式接口!

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

原文鏈接:http://www.cnblogs.com/MPPC/p/5357572.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产伊人网 | 秀婷程仪公欲息肉婷在线观看 | 摔跤成人黄版 | 日本videosdesexo乱 | 国产51页| 日本一区二区三区视频在线观看 | 成年女人毛片免费观看中文w | 亚洲国产天堂在线观看 | 国产在线精品亚洲第一区香蕉 | 啊好大好爽 | 国产自一区 | 欧美日韩国产精品综合 | 精品免费国产 | 久久精品AV一区二区无码 | 亚洲第一综合网站 | 手机在线免费观看视频 | 国产一区二区三区水野朝阳 | 大象传媒1234区 | 亚洲欧美国产自拍 | 精品午夜久久福利大片免费 | 毛片网站观看 | 日韩欧美一区二区三区免费观看 | 国产日产精品久久久久快鸭 | 狠狠撸在线播放 | 欧洲肥女大肥臀 | 97影视| 国模丰满美女冰漪34d | 95视频在线观看在线分类h片 | 我与肥熟老妇的性事 | 深夜福利入口 | 桥本有菜作品在线 | 亚洲国产第一区二区三区 | 调教麻麻成贱m | 欧美成人一区二区 | 久久99re2热在线播放7 | 国产a片毛片 | 四虎国产一区 | 白丝超短裙被输出娇喘不停小说 | 国语对白做受xxxx | 性xxxxbbbbxxxx中国 | 色噜噜国产精品视频一区二区 |