首頁 > Java > java教程 > 主體

Java 8新特性 內建函數式介面詳解

高洛峰
發布: 2017-01-23 15:31:49
原創
1175 人瀏覽過

Java 8新特性內建函數式介面

  在之前的一片博文 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)  

 消費型介面 (Consumer)  

@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("");
 
  }
}
 
<br>
登入後複製

   


供應型介面(Su

@FunctionalInterface
public interface Supplier<T> {
 
  T get();
 
}
登入後複製

斷言型介面(Predicate )

將T 作為輸入,傳回一個布林值作為輸出,該介麵包含多種預設方法來將Predicate 組合成其他複雜的邏輯(與、或、非)。

public class TestFunctional {
  public static void main(String[] args) {
 
    //供应商类型接口,只有输出参数,没有输入参数!
    Supplier<String> supplier = "java 8" :: toUpperCase;
    System.out.println(supplier.get());
  }
}
登入後複製

範例程式碼

@FunctionalInterface
public interface Predicate<T> {
 
  boolean test(T t);
 
}
登入後複製

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

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

更多Java 8新特性 內建函數式介面詳解相關文章請關注PHP中文網!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!