转载

java8新特性之Consumer

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); };
    }
}
下面就是accept方法的使用,理解为这就是一个函数, 函数的入参必须要有一个,返回为void就行,最后那种写法就是因为println的入参只有一个String类型的所以才满足。
Consumer<String> consumer = new Consumer<String>() {
            @Override
            public void accept(String s) {
                System.out.println(s);
            }
        };
        consumer.accept("hello");

        consumer = x ->{
            System.out.println(x);
        };

        consumer.accept("hello");

        consumer = System.out::println;

        consumer.accept("hello");
还一个andThen方法,就是consumer1调用andThen方法,参数是consumer2,返回是一个consumer。然后这个consumer再执行accept()就相当于先执行consumer1中的accept()再执行consumer2中的accept()。感觉用到的机会很少,我直接一个consumer能搞定的事为什么要用俩。
Consumer<String> consumer1 = new Consumer<String>() {
            @Override
            public void accept(String s) {
                System.out.println("consumer1" + s );
            }
        };

        Consumer<String> consumer2 = new Consumer<String>() {
            @Override
            public void accept(String s) {
                System.out.println("consumer2" + s);
            }
        };

        consumer1.andThen(consumer2).accept("hello");
正文到此结束
Loading...