我被要求删除运行以下代码时发生的堆栈溢出异常 - 当提供大量数据时。这就是我被告知的全部内容。可悲的是,我不确定如何围绕它编写一个 junit 测试用例,因为我真的不明白这里发生了什么。有人可以帮助我理解这一点:
public interface FolderMaster<T, U>{
U foldIt(U u, Queue<T> list, FunctionBi<T,U,U> bidi);
}
public interface FunctionBi<T, U, R>{
R applyIt(T t, U u);
}
public class CommonFolder<T, U> implements FolderMaster<T, U>{
public U foldIt(U u, Queue<T> ts, FunctionBi<T, U, U> bidi){
if(u == null || ts == null || bidi == null)
throw new IllegalArgumentException();
if (ts.isEmpty()) {
return u;
}
return foldIt(bidi.applyIt(ts.poll(), u), ts, bidi);
}
}
由于 FunctionBi 与 java.util.functoin.BiFunction 密切匹配,我查找了java doc,但它只有一个接口方法 apply。是否有任何类可以演示此类的用法?我想我只是迷失了理解上面的代码是如何工作的。