我有一个大约十行代码的方法。我想创建更多的方法来做同样的事情,除了一个小的计算会改变一行代码。这是一个完美的应用程序,用于传递函数指针以替换该行,但 Java 没有函数指针。我最好的选择是什么?
最佳答案
匿名内部类
假设你想要一个函数传入一个返回 int
的 String
参数。
首先,如果您不能重用现有接口(interface),则必须定义一个接口(interface),该接口(interface)作为其唯一成员。
interface StringFunction {
int func(String param);
}
采用指针的方法只接受 StringFunction
实例,如下所示:
public void takingMethod(StringFunction sf) {
int i = sf.func("my string");
// do whatever ...
}
会这样称呼:
ref.takingMethod(new StringFunction() {
public int func(String param) {
// body
}
});
编辑:在 Java 8 中,您可以使用 lambda 表达式调用它:
ref.takingMethod(param -> bodyExpression);
https://stackoverflow.com/questions/122407/