- Consumer<T> 是一个函数式接口
- jdk1.8加入。
- 代表一个“接受一个参数,但是不返回值”的函数
- 函数式方法是accept
源码:
import java.util.Objects;
@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); };
}
}
看个例子,很简单不再赘述。
import java.util.function.Consumer;
public class ConsumerTest {
public static void main(String[] args) {
ConsumerTest consumerTest = new ConsumerTest();
//传入一个字符串,直接打印。
consumerTest.ai("你好 小丫", (item) -> System.out.println(item));
//传入姓名,打印欢迎语
consumerTest.ai("小丫", (item) -> System.out.println("欢迎你 [" + item + "]"));
}
/**
* 定义了一个函数,传入一个字符串,但是不返回值。
*
* @param str 传入的参数
* @param consumer 行为定义。
*/
private void ai(String str, Consumer<String> consumer) {
consumer.accept(str);
}
}
default方法 andThen:
import java.util.function.Consumer;
public class ConsumerTest {
public static void main(String[] args) {
ConsumerTest consumerTest = new ConsumerTest();
//传入姓名,打印欢迎语,并打印输入姓名的长度。
consumerTest.ai("小丫", item -> System.out.println("hello" + item), item -> System.out.println(item.length()));
}
/**
* 定义了一个函数,传入一个字符串,但是不返回值。
*
* @param str 传入的参数
* @param consumer 行为定义。
* @param andThen 滞后的行为
*/
private void ai(String str, Consumer<String> consumer, Consumer<String> andThen) {
consumer.andThen(andThen).accept(str);
}
}
输出结果:
hello小丫
2
Process finished with exit code 0