Java 8 Functions - compose and andthen
2022-09-02 14:22:38
我发现我的Java知识与Java 8过时了,并且我正在尝试学习许多新的语言功能。其中之一是函数,特别是 和 方法。compose
andThen
我写了一个微不足道的实验来测试 和 的可逆性:compose
andThen
/** Wraps a value
*/
public class Wrap<T> {
private final T value;
private Wrap(T value) {
this.value = value;
}
public static <T> Wrap<T> of(T value) {
return new Wrap<>(value);
}
}
static void functions() {
Function<Integer,String> itos = i->"'"+i+"'";
Function<String,Wrap<String>> stow = s->Wrap.of(s);
Function<Integer,Wrap<String>> itow = itos.andThen(stow);
Function<Integer,Wrap<String>> itow2 = stow.compose(itos);
System.out.println(itow.apply(3));
System.out.println(itow2.apply(3));
}
在上面的代码中,正如预期的那样,这两个函数似乎等效。但它们实际上是等价的吗?在这种情况下,是否有相同的结果有些偶然?itow
itow2
人们认为,和方法的存在是有原因的,并且函数或双函数可能并不总是以这种方式可逆的。你能想到任何可逆性不适用的情况吗?compose
andThen