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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java8新特性(3)--- 函数式接口

發布時間:2024/7/23 编程问答 65 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java8新特性(3)--- 函数式接口 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

java8新特性(3)— 函數式接口

有且僅有一個抽象方法

package com.common.jdk8;import java.util.Arrays; import java.util.List; import java.util.function.Predicate;// 函數式接口(Functional Interface)就是一個有且僅有一個抽象方法,但是可以有多個非抽象方法的接口。 public class Jdk8Test3 {public static void main(String[] args) {GreetingService greetingService = message -> System.out.println("Hello " + message);greetingService.sayMessage("xiaoming");greetingService.sayMessage("xiaoming2");greetingService.sayMessage("xiaoming3");greetingService.sayMessage("xiaoming4");List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);// JDK 1.8 新增加的函數接口:java.util.function// Predicate也是這個包下的// Predicate <T> 接口是一個函數式接口,它接受一個輸入參數 T,返回一個布爾值結果。// Predicate<Integer> predicate = n -> true// n 是一個參數傳遞到 Predicate 接口的 test 方法// n 如果存在則 test 方法返回 trueSystem.out.println("輸出所有數據:");// 傳遞參數 neval(list, n -> true);// Predicate<Integer> predicate1 = n -> n%2 == 0// n 是一個參數傳遞到 Predicate 接口的 test 方法// 如果 n%2 為 0 test 方法返回 trueSystem.out.println("輸出所有偶數:");eval(list, n -> n % 2 == 0);// Predicate<Integer> predicate2 = n -> n > 3// n 是一個參數傳遞到 Predicate 接口的 test 方法// 如果 n 大于 3 test 方法返回 trueSystem.out.println("輸出大于 3 的所有數字:");eval(list, n -> n > 3);//不用eval方法System.out.println("不用eval方法,輸出大于 3 的所有數字:");list.stream().filter(n -> n > 3).forEach(System.out::println);}public static void eval(List<Integer> list, Predicate<Integer> predicate) {for (Integer n : list) {if (predicate.test(n)) {System.out.println(n + " ");}}}//和eval方法一樣public static void eval2(List<Integer> list, Predicate<Integer> predicate) {list.stream().filter(predicate).forEach(System.out::println);} }//加不加 @FunctionalInterface 對于接口是不是函數式接口沒有影響,該注解只是提醒編譯器去檢查該接口是否僅包含一個抽象方法 //@FunctionalInterface interface GreetingService {//只能有這一個抽象方法,多了就報錯了void sayMessage(String message);//函數式接口里是可以包含默認方法,因為默認方法不是抽象方法default void defaultMethod() {System.out.println("defaultMethod");}//函數式接口里可以包含靜態方法,因為靜態方法不是抽象方法static void printHello() {System.out.println("Hello");}//函數式接口里允許定義 java.lang.Object 里的 public 方法,這些方法不被看成所謂的抽象方法@Overrideboolean equals(Object obj);}

運行結果

Hello xiaoming Hello xiaoming2 Hello xiaoming3 Hello xiaoming4 輸出所有數據: 1 2 3 4 5 6 7 8 9 10 輸出所有偶數: 2 4 6 8 10 輸出大于 3 的所有數字: 4 5 6 7 8 9 10 不用eval方法,輸出大于 3 的所有數字: 4 5 6 7 8 9 10

總結

以上是生活随笔為你收集整理的java8新特性(3)--- 函数式接口的全部內容,希望文章能夠幫你解決所遇到的問題。

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