我们在使用lambda表达式的时候,通常需要定义一个接口,如果我们每次都去定义一个接口,显然是有点儿麻烦的,
所以java8中提供了四个内置的函数式接口,通过直接使用这四个接口,或者使用它们的扩展接口,就可以让我们很方便的使用lambda表达式。
1.Consumer(消费型接口)接收一个参数,无返回值
@FunctionalInterface
public interface Consumer<T> {
/**
* Performs this operation on the given argument.
*
* @param t the input argument
*/
void accept(T t);
}
2.Supplier(提供型接口) 无参,有返回值
@FunctionalInterface
public interface Supplier<T> {
/**
* Gets a result.
*
* @return a result
*/
T get();
}
3.Function(函数接口)接收一个参数,有返回值
@FunctionalInterface
public interface Function<T, R> {
/**
* Applies this function to the given argument.
*
* @param t the function argument
* @return the function result
*/
R apply(T t);
}
4.Predicat(断言型接口)接收一个参数,返回boolean
@FunctionalInterface
public interface Predicate<T> {
/**
* Evaluates this predicate on the given argument.
*
* @param t the input argument
* @return {@code true} if the input argument matches the predicate,
* otherwise {@code false}
*/
boolean test(T t);
}
上述四个函数式接口在stream api中被大量的使用,理解好这四个接口对我们熟练的使用stream api很有好处。