gpt4 book ai didi

java - 引用 fnc

转载 作者:行者123 更新时间:2023-11-29 07:22:18 25 4
gpt4 key购买 nike

Java 中有没有办法做这样的事情:

void fnc(void Reference_to_other_func());

我正在尝试的基本上是我有很多地方需要向用户显示相同的文本,唯一的区别是在该文本之后调用哪个方法。因此,例如而不是写:

System.out.println("Hello");
f1();
//in some other place
System.out.println("Hello");
f2();
//etc

我想定义一个函数:

public void f(void Reference_to_other_func())
{
System.out.println("Hello");
Reference_to_other_func();//HERE I'M INVOKING
}

然后我可以写这样的东西而不是重复整个代码:

f(f1);
//in some other place
f(f2)
//etc.

感谢解答

最佳答案

Java 没有一等函数,这使得大多数函数式编程技术的实现有些乏味。

在这种情况下,你可以做一个接口(interface):

public interface Callback {
void doCallback();
}

(编辑: 或者您可以使用 java.util.concurrent.Callable<V> ,它允许您指定返回类型)

然后声明f获取此接口(interface)的实例:

public void f(Callback callback) {
System.out.println("Hello");
callback.doCallback();
}

并将此接口(interface)的实例传递给函数:

f(new Callback() {
public void doCallback() {
f1();
}
});
f(new Callback() {
public void doCallback() {
f2();
}
});

如您所见,除非您经常这样做,否则 yield 不会变得明显。

关于java - 引用 fnc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2516888/

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