Consumer类包含两个方法,一个accept
方法用来对输入的参数进行自定义操作,因为是个抽象方法,所以需要实例化对象的时候进行Override,另一个andThen
方法跟Function的方法一样是一个default方法,已经有内部实现所以不需要用户重写,并且具体功能也跟Function差不多。Consumer的中文意思是消费者,意即通过传递进一个参数来对参数进行操作。
示例代码:
import java.util.function.Consumer;
public class ConsumerTest {
public static void main(String[] args) {
Foo f = new Foo();
f.foo(new Consumer<Integer>() {
@Override
public void accept(Integer integer) {
System.out.println(integer);
}
});
}
}
class Foo {
private int[] data = new int[10];
public Foo() {
for (int i = 0; i < 10; i++) {
data[i] = i;
}
}
public void foo(Consumer<Integer> consumer) {
for (int i : data)
consumer.accept(i);
}
}
首先新建一个类,在这个类里有一个int型数组,在构造方法里对数组赋初值,然后又一个foo方法传入一个Consumer对象,对每一个数组项调用consumer对象的accept方法。在main函数里实例化Foo对象并调用foo方法。
输出结果:
在上面的代码中,由于Java8引入的lambda表达式,所以其中的
f.foo(new Consumer<Integer>() {
@Override
public void accept(Integer integer) {
System.out.println(integer);
}
});
可以简写成
f.foo(integer -> System.out.println(integer));
或者进一步简写成
f.foo(System.out::println);