如何在Java中将函数作为参数传递?
这个问题在这里已有答案:
Java Pass方法作为参数 14个答案
是否可以将方法作为参数传递给Java方法? 如果是这样,有人可以指导我吗? 这似乎并不重要
Jason asked -01-26T17:30:56Z
8个解决方案
379 votes
Java 8及以上版本
使用Java 8+ lambda表达式,如果您的类或接口只有一个方法,例如:
public interface MyInterface {
String doSomething(int param1, String param2);
}
然后在任何使用MyInterface的地方,您可以替换lambda表达式:
class MyClass {
public MyInterface myInterface = (p1, p2) -> { return p2 + p1; };
}
例如,您可以非常快速地创建新线程:
new Thread(() -> someMethod()).start();
并使用方法参考语法使其更清晰:
new Thread(this::someMethod).start();
如果没有lambda表达式,最后两个示例将如下所示:
new Thread(new Runnable() { someMethod(); }).start();
在Java 8之前
一