本文最后更新于 104 天前,其中的信息可能已经有所发展或是发生改变。
函数式接口
介绍
特点
- 接口中有且仅有一个抽象方法
- 可以包含静态方法和默认方法
- 使用@FunctionInterface注解标识
使用
- java提供了大量的内置函数式接口,位于java.util.funciton包中
- 也可以自定义函数式接口
示例
@FuncitonalInterface
interface Calculator{
int calculator(int a, int b);
}
public class Test{
public static void main(String[] args){
Calculator add = new Calcaulator(){
@Override
public int calculator(int a,int b){
return a + b;
}
}
add.calculator(10,11);//21
}
}
java.util.function
介绍
- java提供的内置函数式接口,是java8的新特性
Predicate<T>
特点
- 传入一个参数,返回一个布尔值
- 通常用于条件测试
抽象方法
示例
public static void main(String[] args){
Predicate<String> isLength5 = new Predicate<>(){
@Override
public boolean test (String str){
return str.length() > 5;
}
}
isLength5.test("hello");//false
}
其他判断型接口
接口 |
特点 |
BiPredicate<T,U> |
传入两个参数 |
DoublePredicate |
传入一个double |
IntPredicate |
传入一个int |
LongPredicate |
传入一个long |
Consumer<T>
特点
- 传入一个参数,无返回值
- 通常用于消费数据(打印,写入文件)
抽象方法
其他消费型接口
接口 |
特点 |
BiConsumer<T,U> |
传入两个参数 |
DoubleConsumer |
传入一个double |
IntConsumer |
传入一个int |
LongConsumer |
传入一个long |
ObjDoubleConsumer<T t,double value> |
传入一个参数和double |
ObjIntConsumer<T t,int value> |
传入一个参数和int |
ObjLongConsumer<T t,long value> |
传入一个参数和long |
Supplier<T>
特点
抽象方法
其他奉献型接口
接口 |
特点 |
BolleanSupplier |
返回一个boolean |
IntSupplier |
返回一个int |
LongSuppier |
返回一个long |
DoubleSuppier |
返回一个double |
Function<T,R>
特点
抽象方法
默认方法
方法 |
描述 |
default <V> Function<T, V> andThen(Function<? super R, ? extends V> after) |
将当前函数的返回值作为参数传递给下一个函数 |
default <V> Function<V, R> compose(Function<? super V, ? extends T> before) |
将另一个函数的返回值作为当前函数的参数 |
默认方法
其他供给型接口
接口 |
特点 |
UnaryOperator<T> |
接收一个T类型参数,返回T类型 |
BinaryOperator<T> |
接收两个T类型参数,返回T类型 |
BiFunction<T,U,R> |
接收T,U类型参数,返回R类型 |