1.Function 接口说明
核心方法
R apply(T t)
: 有 参数,有返回值
* 说明 :
* 1.接口名称 : Function
* 2.方法
* R apply(T t) : 传入参数t,返回数据R
* default <V> Function<T, V> andThen(Function<? super R, ? extends V> after) : 连续操作
* default <V> Function<V, R> compose(Function<? super V, ? extends T> before) : 连续操作,与andThen的操作方向相反
* static <T> Function<T, T> identity() :返回一个输入和输出一样的Lambda表达式,目前还没有看懂这个静态方法有什么作用!!!
* 3.应用场景 :
* 当你需要对某些数据进行转换且需要返回值的时候,可以直接使用这个接口
*
* 【注意】 : 此处的 andThen 方法可能会比较难理解;
* 不过,跟着代码 结合 运行结果来理解,还是比较简单的
*
2.使用案例
2.1 案例代码
package com.northcastle.G_functionalInterface;
public class FunctionTest {
public static void main(String[] args) {
//1.直接体会 对数据的转换 : 传入一个名字,返回 Hello + 名字
String helloStr = sayHello(nameParam -> "Hello " + nameParam, "Tom");
System.out.println("Function apply 的转换结果是 : "+helloStr);
System.out.println();
//2.体会 连续操作 andThen
String helloStr2 = sayHello2(name1 -> "[Hello01 "+name1+"] ",
name2 -> "[Hello02 "+name2+"] ",
name3 -> "[Hello03 "+name3+"]",
"Jerry");
System.out.println("andThen 连续操作的转换结果是 : "+helloStr2);
System.out.println();
//3.体会 连续操作 compose
String helloStr3 = sayHello3(name1 -> "[Hello01 "+name1+"] ",
name2 -> "[Hello02 "+name2+"] ",
name3 -> "[Hello03 "+name3+"]",
"Jack");
System.out.println("compose 连续操作的转换结果是 : "+helloStr3);
System.out.println();
}
/**
* 1.体会apply()方法的使用
* @param function 接口对象
* @param name 被转换的值
* @return 处理之后的返回值
*/
public static String sayHello(Function<String,String> function,String name){
String res = function.apply(name);
return res;
}
/**
* 2.多个 连续操作 andThen
* @param f1 第一个要执行的
* @param f2 第二个要执行的
* @param f3 第三个要执行的
* @param name 要处理的参数
* @return 处理之后的参数
*/
public static String sayHello2(Function<String,String> f1,Function<String,String> f2,Function<String,String> f3,String name){
String res = f1.andThen(f2).andThen(f3).apply(name);
return res;
}
/**
* 3.多个 连续操作 compose : 顺序反过来了
* @param f1 第三个要执行的
* @param f2 第二个要执行的
* @param f3 第一个要执行的
* @param name 要处理的参数
* @return 处理之后的参数
*/
public static String sayHello3(Function<String,String> f1,Function<String,String> f2,Function<String,String> f3,String name){
String res = f1.compose(f2).compose(f3).apply(name);
return res;
}
}
2.2 运行结果
3.完成
Congratulations!
You are one step closer to success!