コンシューマ/サプライヤ/述語/ UnaryOperatorはFunctionの特殊なケースであるため、これらのインタフェースをFunctionに置き換えるにはどうすればよいですか?java8 - コンシューマまたはサプライヤを置き換える関数インタフェースを使用する
T - >機能 - > R
T - >コンシューマ - >ヌル
ヌル - >サプライヤー - > T
T - >述語 - >ブール
T - > UnaryOperator - > T
null &ブール値はTの特別なケースです。したがって、PredicateとUnaryOperatorを置き換えるFunctionを使用して2つのケースを作成します。例えば
:
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));
}
しかし、どのように、私は消費者やSupplerを交換する機能を使用することができますか?たとえば、Consumerを置き換えたいのですが、Function<String, null> func = x -> System.out.println(x);
のようなコードは不正です。
任意の提案を大幅Consumer<T>
がFunction<T, Void>
として見ることができる〜
なぜあなたはそれをしますか? – Lino
Functionではなく、特定の関数を使用する方が便利なため、プロダクション環境でコーディングするときに、java.util.functionの他の関数を置き換えるために関数を使用しません。しかし、これらの機能の性質を知ることで、これらの機能をよりよく理解し、実際に使用することができます。 :D – puppylpg