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

一、什么是函数式接口

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

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

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

举例:

         Runable接口

二、自定义函数式接口

1、自定义函数式接口

 1 @FunctionalInterface
 2 public interface LambdaDemo {
 3 
 4     /**
 5      * 有且仅有一个方法
 6      * @param x
 7      * @param y
 8      * @return
 9      */
10     Integer count(int x,int y);
11 }
View Code

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

1 @FunctionalInterface
2 public interface MyFunction<T> {
3 
4 
5     T getValue(T t);
6 }
View Code

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

1 @Override
2     public String getValue(MyFunction<String> string, String t2) {
3         return t1.getValue(string,t2);
4     }
View Code

作为表达式

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

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

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

Consumer<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);

       

原文地址:https://www.cnblogs.com/liuyangfirst/p/10058635.html