如何在Java中传递函数作为参数?

问题:

可以将方法作为参数传递给Java方法吗?如果是这样,有人可以指导我吗?这似乎不是微不足道的

回答:

 注意:以下答案对于Java BEFORE Java 8之前的版本是足够的。如果使用Java 8,请查找“java 8 lambda表达式”。这是下面我描述的句法糖。

一个常见的模式是将其包装在界面中,例如Callable,然后传入Callable:

public T myMethod(Callable<T> func) {
    return func.call();
}

这种模式被称为Command Pattern
请记住,您最好为您的特定用途创建一个界面。如果您选择与可调用一起使用,那么您可以使用任何类型的返回值替换T,例如String。
为了回应你的评论,你可以说:

public int methodToPass() { 
        // do something
}

public void dansMethod(int i, Callable<Integer> myFunc) {
       // do something
}

然后调用它,也许使用匿名内部类:

dansMethod(100, new Callable<Integer>() {
   public Integer call() {
        return methodToPass();
   }
});

记住这不是一个“伎俩”。这只是java的基本概念,相当于函数指针。

 
 
Code问答: http://codewenda.com/topics/python/
Stackoverflow: How to pass a function as a parameter in Java?

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

发表评论

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

19 − = 13