其他语言可能会使用闭包来解决这个问题。对于 Java,您需要传递一个类的对象。
例如,您可能有一个名为 的函数Looper
,它需要一个参数operation
,您将使用此操作调用该函数。
要在 pre-java 8 中做到这一点,您可以做的是编写一个函数,该函数接受一个可以调用或等效的对象并执行您的操作。
(可能有小错误,见谅,写Java代码有一段时间了,希望思路清晰)
public interface Operation {
public int performOperation(int a, int b);
}
...
public void Looper(Operation o, int a, int b){
for(int i = 0; i<width; i++){
for(int i = 0; i<width; i++){
o.performOperation(a,b);
}
}
}
//elsewhere
Looper(new Operation{
public int performOperation(int a, int b){
return a + b;
}
}, 10,15);
这种模式见于map
和函数式语言中的其他类似函数,foreach
以及 C++ 中的一百万个其他函数。