一、接口定义
函数式接口的定义:接口中只有一个抽象方法的接口,称为函数式接口。在 Java8 中 Consumer 是一个消费型的函数式接口(有一个参数,无返回值),其定义如下:
@FunctionalInterface
public interface Consumer<T> {
void accept(T t);
default Consumer<T> andThen(Consumer<? super T> after) {
Objects.requireNonNull(after);
return (T t) -> { accept(t); after.accept(t); };
}
}
二、使用举例
Consumer 接口,可以通过 accept 方法实现对某个对象消费逻辑的调用,也可以通过 andThen + accept 方法实现对某个对象消费逻辑的链式调用:
import java.util.function.Consumer;
public class TestConsumer {
public static class DemoExample {
public static void myIntegerConsumer(Integer x) {
System.out.println("myIntegerConsumer accept " + x + " and do something...");
}
public static void myStringConsumer(String x) {
System.out.println("myStringConsumer accept " + x + " and do something...");
}
public static <T> T myGenericsyConsumer(T x) {
System.out.println("myGenericsyConsumer " + x + " and do something...");
return x;
}
}
public static void main(String[] args) {
Consumer<Integer> consumer1 = new Consumer<Integer>() {
@Override
public void accept(Integer x) {
System.out.println("myGeneralComsumer accept " + x + " and do something...");
}
};
Consumer<Integer> consumer2 = x -> System.out.println("myLambdaComsumer accept " + x + " and do something...");
Consumer<Integer> consumer3 = DemoExample::myIntegerConsumer;
Consumer<String> consumer4 = DemoExample::myStringConsumer;
Consumer<Integer> consumer5 = DemoExample::myGenericsyConsumer; // 目标函数可以有返回值,但入参必须只有一个
consumer4.accept("ssss");
consumer1.andThen(consumer2).andThen(consumer3).andThen(consumer5).accept(1234);
}
}
原创不易,如需转载,请标明出处!
最后修改:2021-06-04 02:13:34
© 著作权归作者所有
如果觉得我的文章对你有用,请随意赞赏
扫一扫支付

发表评论