Fuction 接口
函数式接口
核心方法
apply() 方法
传递一种行为,在使用的时候定义一段行为和传入的参数具体值,个人理解下来是匿名方法的一种增强,提高了可阅读性
示例代码:
@Test
void printAnswer() {
System.out.println(submit(3, v -> v + v));
System.out.println(printMyInput("Hello", s -> s + " World!"));
}
int submit(int a, Function<Integer, Integer> function) {
return function.apply(a);
}
String printMyInput(Object s, Function<Object, String> function) {
return function.apply(s);
}
compose()
这个方法接收一个function作为参数,将参数function执行的结果作为参数给调用的function,以此来实现两个function组合的功能。 举个例子 : F(x).compose(g(x))=F(g(x))
示例代码:
@Test
void printAnswer() {
//32
System.out.println(submit(4, v -> v + v, v1 -> v1 * v1));
}
int submit(int a, Function<Integer, Integer> f1, Function<Integer, Integer> f2) {
Function<Integer, Integer> f = f1.compose(f2);
return (int) f.apply(a);
}
andThen()
andThen方法也是接收一个function作为参数,与compse不同的是,先执行本身的apply方法,将执行的结果作为参数给参数中的function。 F(x).andThen(G(x))=G(F(x))
示例代码:
@Test
void printAnswer() {
//64
System.out.println(submit(4, v -> v + v, v1 -> v1 * v1));
}
int submit(int a, Function<Integer, Integer> f1, Function<Integer, Integer> f2) {
Function<Integer, Integer> f = f1.andThen(f2);
return f.apply(a);
}
BiFuction 接口
Fuction可以传一个形参,BiFuction可以传俩
核心方法
apply()
示例代码:
@Test
void printAnswer() {
System.out.println(submit(1, 2, (a, b) -> a + b));
}
int submit(int a, int b, BiFunction<Integer, Integer, Integer> function) {
return function.apply(a, b);
}