引言
Java 8 带来了很多新的特性,我们今天来聊一下4个接口:Consumer Supplier Predicate Function 这4个接口在实际过程中的用法。
注:在此之前可以了解下 Lambda 表达式相关的内容
消费型接口 Consumer
代码示例 ① 作为接口传入到 forEach 进行消费
public static void main(String[] args) {
Consumer consumer = new Consumer() {
@Override
public void accept(Object o) {
System.out.println("consumer val=" + o);
}
};
List<String> lists = Lists.newArrayList();
lists.add("test-1");
lists.add("test-2");
lists.add("test-3");
lists.stream().forEach(consumer);
}
consumer val=test-1
consumer val=test-2
consumer val=test-3
代码示例 ② Lambda 作为 Consumer 传入到 forEach 进行消费
Consumer<String> consumer1 = (val) -> System.out.println(val);
lists.stream().forEach(consumer1);
代码示例 ③ 方法引用作为 Consumer 传入 forEach 进行消费
Consumer<String> consumer2 = System.out::println;
lists.stream().forEach(consumer1);
供给型的接口 Supplier
Supplier 内部相当于维护一个容器,可以存储值,之后可以通过supplier.get()获取值。
public static void main(String[] args) {
Supplier<String> supplier = new Supplier() {
@Override
public String get() {
return "test Supplier";
}
};
System.out.println(supplier.get());
Supplier<String> supplier1 = () -> "test Supplier 2 ";
System.out.println(supplier1.get());
}
断言式接口 Predicate
接口Predicate是一个断言式接口,其中实现接口 test 返回 Boolean
public static void main(String[] args) {
Predicate<Integer> predicate = new Predicate<Integer>() {
@Override
public boolean test(Integer o) {
return 1 < 2;
}
};
System.out.println(predicate.test(1));
Predicate<Integer> predicate1 = (val) -> val > 1;
System.out.println(predicate1.test(1));
}
功能型接口Function
功能型接口:它的一个作用就是转换作用,将输入数据转换成另一种形式的输出数据。
public static void main(String[] args) {
Function<String, Integer> function = new Function<String, Integer>() {
@Override
public Integer apply(String val) {
return Integer.valueOf(val);
}
};
System.out.println(function.apply("1"));
}
网友评论