public class Letter {
public static String addHeader(String text) {
return "head " + text;
}
public static String addFooter(String text) {
return text + " foot";
}
public static String checkSpelling(String text) {
return text.replaceAll("123", "lambda");
}
public static void main(String[] args) {
Function<String, String> addHeader = Letter::addHeader;
Function<String, String> stringStringFunction = addHeader.andThen(Letter::checkSpelling).andThen(Letter::addFooter);
String wan_lbdb = stringStringFunction.apply("123");
System.out.println(wan_lbdb);
}
}
这段代码为什么输出的是
head lambda foot
头尾的123为什么没有输出
Function
R apply(T t) – 将Function对象应用到输入的参数上,然后返回计算结果。
default <V> Function<T,V> andThen(Function<? super R,? extends V> after) 返回一个先执行当前函数对象apply方法再执行after函数对象apply方法的函数对象。
andThen 是在 addHeader 增加后续要执行的函数对象
也就是 (stringStringFunction) = addHeader -> checkSpelling -> addFooter 这样的执行顺序
stringStringFunction.apply("123")
addHeader -> checkSpelling -> addFooter = head lambda foot