一尘不染

什么是Java中函数指针的最接近替代品?

java

我有一个大约十行代码的方法。我想创建更多功能完全相同的方法,只是进行少量计算会更改一行代码。这是传入函数指针以替换该行的理想应用程序,但是Java没有函数指针。我最好的选择是什么?


阅读 662

收藏
2020-03-04

共1个答案

一尘不染

匿名内部阶级

假设你要传入的函数String返回一个参数int
首先,如果你不能重用现有的接口,则必须定义一个以该函数作为其唯一成员的接口。

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);
2020-03-04