由于Consumer / Supplier / Predicate / UnaryOperator只是Function的一个特例,我该如何用Function替换这些interfacces?
T - >功能 - > [R
T - >消费者 - >空
null - >供应商 - > Ť
T - >谓词 - >布尔
T - > UnaryOperator - > Ť
null& boolean只是T的特例。所以我用函数来编写两个案例来替换Predicate和UnaryOperator。
例如:
private static void replacePredicate() {
Function<String, Boolean> func = x -> x.startsWith("a");
Predicate<String> pre = x -> x.startsWith("a");
System.out.println(func.apply("ape"));
System.out.println(pre.test("ape"));
}
private static void replaceUnaryOperator() {
Function<Integer, Integer> func = x -> x * 2;
UnaryOperator<Integer> uo = x -> x * 2;
System.out.println(func.apply(6));
System.out.println(uo.apply(6));
}
但是我如何使用Function替换Consumer或Suppler?例如,我想替换Consumer,但像Function<String, null> func = x -> System.out.println(x);
这样的代码是非法的。
任何建议都将不胜感激〜
答案 0 :(得分:9)
Consumer<T>
可以被视为Function<T, Void>
。 Supplier<T>
可以被视为Function<Void, T>
。您必须从作为函数编写的使用者中返回null,并从供应商处获取(并忽略)Void作为函数。
不确定我是否明白这一点。