JAva 8-javaが提供する関数インタフェース
6918 ワード
Java内蔵の関数インタフェース
Function
Tタイプを受信し、Rタイプの関数インタフェースを返す
関数の組合せ方法
BiFunction
2つのタイプ(T、U)を受信し、Rタイプを返す関数インタフェース.
Consumer
Tタイプを受け入れ、値を返さない関数インタフェース
関数の組合せ方法
Supplier
Tタイプ値を提供する関数インタフェース
Predicate
Tタイプを受信しbooleanの関数インタフェースに戻る
関数の組合せ方法
UnaryOperator
BinaryOperator
Function<T,R>
インタフェース
public class Plus10 implements Function<Integer, Integer> {
@Override
public Integer apply(Integer integer) {
return integer + 10;
}
}
public class Plus {
public static void main(String[] args) {
Plus10 plus10 = new Plus10();
plus10.apply(1);
}
}
使用可能public class Plus {
public static void main(String[] args) {
Function<Integer, Integer> plus10 = (i) -> i + 10;
plus10.apply(1);
}
}
上記のように個別のクラスを作成する必要はなく、ramda形式で使用できます.そして,Function
public class Plus {
public static void main(String[] args) {
Function<Integer, Integer> plus10 = (i) -> i + 10;
Function<Integer, Integer> multiply2 = (i) -> i* 2;
Function<Integer, Integer> multiply2AndPlus10 = plus10.compose(multiply2);
multiply2AndPlus10.apply(2);
}
}
ドゥラム茶食を加えた+10.compose(multiply 2)関数は、変数値がX 2の後に10を加えた関数です.これに対し、AndThen()関数はcompose()関数とは逆に、10を加算し、X 2を加算する関数です.
public class Plus {
public static void main(String[] args) {
Function<Integer, Integer> plus10 = (i) -> i + 10;
Function<Integer, Integer> multiply2 = (i) -> i* 2;
Function<Integer, Integer> multiply2AndPlus10 = plus10.compose(multiply2);
System.out.println("multiply2AndPlus10.apply(2) = " + multiply2AndPlus10.apply(2));
Function<Integer, Integer> plus10AndMultiply2 = plus10.andThen(multiply2);
System.out.println("plus10AndMultiply2.apply(2) = " + plus10AndMultiply2.apply(2));
}
}BiFuntion(T,U,R)
この関数はFunction
Consumer<T>
public class Consume {
public static void main(String[] args) {
Consumer<String> printT = (s) -> System.out.println(s);
printT.accept("Hello");
}
}
Supplier<T>
public class Supply {
public static void main(String[] args) {
Supplier<Integer> get10 = () -> 10;
get10.get();
}
}
Predicate<T>
public class Predict {
public static void main(String[] args) {
Predicate<String> startsWithHyunSik = (s) -> s.startsWith("hyunsik");
Predicate<Integer> isOdd = (i) -> i % 2 == 1;
System.out.println("startsWithHyunSik.test(\"hyunsikYoon\") = " + startsWithHyunSik.test("hyunsikYoon"));
System.out.println("isOdd.test(4) = " + isOdd.test(4));
}
}
UnaryOperator<T>
// Function<Integer, Integer> plus10 = (i) -> i + 10;
UnaryOperator<Integer> plus10 = (i) -> i + 10;
入力タイプが戻りタイプと同じ場合は、UnaryOperatorBinaryOperator<T>
2つの
Reference
この問題について(JAva 8-javaが提供する関数インタフェース), 我々は、より多くの情報をここで見つけました https://velog.io/@hyun6ik/자바8-자바에서-제공하는-함수형-인터페이스テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol