JAVA 8 主要新特性 ----------------(四)Lambda函数式接口

时间:2022-11-20 05:39:51

一、什么是函数式接口

只包含一个抽象方法的接口,称为函数式接口。  你可以通过 Lambda 表达式来创建该接口的对象。(若 Lambda 表达式抛出一个受检异常,那么该异常需要在目标接口的抽象方法上进行声明)。

可以在任意函数式接口上使用 @FunctionalInterface 注解,这样做可以检查它是否是一个函数式接口,同时 javadoc 也会包含一条声明,说明这个接口是一个函数式接口。

简而言之,就是一个接口中有且仅有一个抽象方法,称之为函数式接口.(1.8存在默认接口和方法.)

举例:

Runable接口

二、自定义函数式接口

1、自定义函数式接口

 @FunctionalInterface
public interface LambdaDemo { /**
* 有且仅有一个方法
* @param x
* @param y
* @return
*/
Integer count(int x,int y);
}

2、自定义泛型函数式接口

 @FunctionalInterface
public interface MyFunction<T> { T getValue(T t);
}

三、作为参数传递 Lambda 表达式

 @Override
public String getValue(MyFunction<String> string, String t2) {
return t1.getValue(string,t2);
}

作为表达式

 List<Employee> myEmployeeList = acutalEmployee(employeeList, employee -> employee.getSalary() >= 10000);

四、Java 内置四大核心函数式接口

函数式接口   参数类型   返回类型  用途 

Consumer<T> 消费型接口

T

void  对类型为T的对象应用操 作,包含方法: void accept(T t)

Supplier<T> 供给型接口

返回类型为T的对象,包 含方法:T get();

Function<T, R> 函数型接口

R

对类型为T的对象应用操 作,并返回结果。结果 是R类型的对象。包含方 法:R apply(T t);

Predicate<T> 断定型接口

boolean 确定类型为T的对象是否 满足某约束,并返回 boolean 值。包含方法 boolean test(T t);