在由Venkat廉在Java书函数式编程中,作者日期为我们提供了完美的作品一memoizer的例子,接下来我离开memoizer类的实现:函数式编程
public class Memoizer {
public static <T,R> R callMemoizer(final BiFunction< Function<T,R>,T,R> function, final T input){
Function<T,R> memoized = new Function<T,R>(){
HashMap<T,R> store = new HashMap<>();
@Override
public R apply(T input) {
return store.computeIfAbsent(input, key -> function.apply(this, key));
}
};
return memoized.apply(input);
}
}
所以这里是我的问题,不会在每次调用方法callMemoizer时创建函数memoized?我假设不是因为其他方式的HashMap存储将不会存储所有的值... 请有人向我解释如何以及为什么那段代码工作...