gpt4 book ai didi

java - 有没有办法将方法作为参数传递给方法?

转载 作者:行者123 更新时间:2023-11-30 02:57:34 25 4
gpt4 key购买 nike

我正在编写一个程序,我想知道是否可以将一个方法作为另一个方法的参数传递。例如,以下内容:

public boolean update(Method m){ //input is a method
int i = m.execute();
// logic relating to the value of i
}

我想知道我是否可以在java中做到这一点。我目前正在阅读有关函数式编程和反射的内容。

最佳答案

这与反射无关,但如果您使用的是 java 8+,则可以传递“方法引用”。假设您打算使用不带参数且仅返回 int 的方法,您可以这样做:

public class MyClass {
public int getIntMemberFunction(){ ... }
public static int getIntStaticFunction(){ ... }
}

将您的更新函数修改为如下所示,

public boolean update(IntSupplier s){ //input is a method reference or lambda
int i = s.get();
// logic relating to the value of i
}

然后,您可以调用 update 传入对任何类上的任何静态函数的引用,只要它不带参数并返回 int,如下所示:

boolean result = update(MyClass::getIntStaticFunction);

或者您可以调用 update 传入对特定对象的任何成员函数的引用,只要它不带参数并返回 int,如下所示:

MyClass myClassInstance = ...
boolean result = update(myClassInstance::getIntMemberFunction);

如果您想添加采用 1 或 2 个参数的方法,您可以创建采用 ToIntFunctionToIntBiFunctionupdate 版本。除了 2 个参数之外,您还必须添加自己的功能接口(interface)。

关于java - 有没有办法将方法作为参数传递给方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36818184/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com