程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> Java 8新特性-5 內建函數式接口,新特性-5

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

編輯:JAVA綜合教程

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


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

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

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

  • 功能型接口 (Function)
    • 將 T 作為輸入,返回 R 作為輸出,他還包含了和其他函數組合的默認方法。
      @FunctionalInterface
      public interface Function<T, R> {
      
          R apply(T t);
      
      }

       

    • 示例代碼
    •       
      public static void main(String[] args) {
              
              // 這裡用到了Java8的 方法引用,功能型函數式接口!
              Function<String,Boolean> function = "Hello Java" :: endsWith;
              System.out.println(function.apply("Java"));
      }

       

 

  • 消費型接口 (Consumer)  
    •  將 T 作為輸入,不返回任何內容,表示在單個參數上的操作。
      @FunctionalInterface
      public interface Consumer<T> {
      
          void accept(T t);
      
      }

       

    • 示例代碼
    •      
      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("");
      
          }
      }

       

 

  • 供應型接口 (Supplier)
    •  沒有輸入參數,只有T返回輸出
      @FunctionalInterface
      public interface Supplier<T> {
      
          T get();
      
      }

       

    • 示例代碼
    •        
      public class TestFunctional {
          public static void main(String[] args) {
      
              //供應商類型接口,只有輸出參數,沒有輸入參數!
              Supplier<String> supplier = "java 8" :: toUpperCase;
              System.out.println(supplier.get());
          }
      }

       

 

  • 斷言型接口 (Predicate)
    • 將 T 作為輸入,返回一個布爾值作為輸出,該接口包含多種默認方法來將 Predicate 組合成其他復雜的邏輯(與、或、非)。
      @FunctionalInterface
      public interface Predicate<T> {
      
          boolean test(T t);
      
      }

       

    • 示例代碼
    •      
      public class TestFunctional {
          public static void main(String[] args) {
              
              //斷言類型接口。有輸入參數,輸出參數為布爾值
              Predicate<String> predicate = "Android" :: equalsIgnoreCase;
              System.out.println(predicate.test("android"));
              
          }
      }

       

   

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

 

  

 

  

  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved