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

问题:

我有一个方法是大约十行代码。我想创建更多的方法,做的完全相同的事情,除了一个小的计算,将改变一行代码。这是传递函数指针以替换该行的完美应用程序,但是Java没有函数指针。我最好的选择是什么?

回答:

匿名内部类
假设您希望有一个函数传入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
    }
});

 EDIT:在Java 8中,您可以使用lambda表达式来调用它:

ref.takingMethod(param -> bodyExpression);

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: What’s the nearest substitute for a function pointer in Java?

*转载请注明本文链接以及stackoverflow的英文链接

发表评论

电子邮件地址不会被公开。 必填项已用*标注

+ 64 = 71