我目前正试图让高阶函数工作,但它一直告诉我f可能没有被定义。我的理解是它应该被定义为必须给出以便运行IntApply方法。任何建议将不胜感激。
package iterators;
import java.util.Iterator;
public class IntApply implements Iterator {
// The function that will be applied to each input element to make an output element
private final IntApplyFunction f;
// The Iterator that this Apply object will get its input from
private final Iterator<Integer> input;
public IntApply(IntApplyFunction f, Iterator<Integer> input) {
while(input.hasNext()){
f.apply(input.next());
}
}
@Override
public boolean hasNext() {
return input.hasNext();
}
@Override
public Integer next() {
return input.next();
}
}
答案 0 :(得分:-1)
您已将f
和input
声明为final
,您必须在构造函数/构造函数中初始化它们或删除final关键字。
在这种特殊情况下,由于您将变量作为参数接收,因此可以将其分配给对象变量字段。
public IntApply(IntApplyFunction f, Iterator<Integer> input) {
this.f = f;
this.input = input;
// rest of the constructor
}
您可以在此处查看final
关键字是什么。
How does the "final" keyword in Java work? (I can still modify an object.)