1. 程式人生 > >java8lambda表示式day01

java8lambda表示式day01

一、函式式介面

只有一個 抽象方法介面 叫函式式介面

/**
 * @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表示式,最重要的是泛型與函式式介面