我有一个大约十行代码的方法。我想创建更多功能完全相同的方法,只是进行少量计算会更改一行代码。这是传入函数指针以替换该行的理想应用程序,但是Java没有函数指针。我最好的选择是什么?
匿名内部阶级
假设你要传入的函数String返回一个参数int。 首先,如果你不能重用现有的接口,则必须定义一个以该函数作为其唯一成员的接口。
String
int
interface StringFunction { int func(String param); }
使用指针的方法将只接受StringFunction实例,如下所示:
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);