java8lambda表示式day01
阿新 • • 發佈:2018-12-24
一、函式式介面
只有一個 抽象方法 的 介面 叫函式式介面
/** * @auther hhh * @date 2018/12/24 22:20 * @description 函式式介面:只有 一個 抽象方法 的介面叫函式式介面 * default、static、Object中的方法除外,其他的抽象方法 */ @FunctionalInterface//註解:java8提供的,只能標註在函式式介面之上,如果這個類不是一個函式式介面,就會報錯 public interface UserMapper { int insert();//只有一個insert()的介面是函式式介面,他就一個抽象方法default int update() {//不是函式式介面 return 1; } static int delete() {//不是函式式介面 return 1; } //Object中的方法都不是函式式介面(與Object中一樣的方法),例如: public int hashCode(); /** * jdk1.8之前的一些函式式介面 * 1、java.lang.Runable * 2、java.util.Comparator * 3、java.util.concurrent.Callable*/ }
二、java8中最重要的函式式介面
java8將函式式介面存放在 External Libraries->rt.jar->java->util->function包中,以下函式式介面是非常重要的。
-
Supplier<T> 代表一個輸出
-
Consumer<T> 代表一個輸入(一個消費)
-
BiConsumer<T, U> 代表兩個輸入
-
Function<T, R> 代表一個輸入一個輸出,T 是輸入 R 是輸出(輸入輸出是不同型別)
-
UnaryOperator<T> extends Function<T, T> 繼承 Function,但是沒有新增方法,只是將輸入輸出變成同一種T型別(輸入輸出是同種型別
-
BiFunction<T, U, R> 代表兩個輸入一個輸出(一般是輸入和輸出是不同型別的)
-
BinaryOperator<T> extends BiFunction<T,T,T> 代表兩個輸入一個輸出(輸入和輸出的型別是一致的,型別都是 T )
一般有Bi的代表兩個的意思
總結:學習lambda表示式,最重要的是泛型與函式式介面