gpt4 book ai didi

java - Java中如何将函数引用作为需要在调用者函数内部调用的参数传递

转载 作者:行者123 更新时间:2023-11-30 03:32:08 57 4
gpt4 key购买 nike

考虑以下场景,在主方法中,基于某些条件我调用方法 func。在 func 中,我需要调用 diff。方法基于我在 func 中作为参数传递的任何内容。我们如何做到这一点?

void mainMethod(){
if(...)
func(methodX);
else
func(methodY);

}

void func(... x) <- takes method name as parameter
{
// do something
// call method received in importing parameter x
}

void methodX()
{
// do something
}

void methodY()
{
// do something
}

最佳答案

Java 中不存在“纯”函数指针。

在 Java 7 之前,您必须使用接口(interface):

void mainMethod() {
if(...)
func(new MethodX());
else
func(new MethodY());
}

void func(Runnable x) {
x.run();
}

private class MethodX implements Runnable {
public void run() {
// do something
}
}

private class MethodY implements Runnable {
public void run() {
// do something
}
}

在 Java 8 中您可以使用方法引用:

void mainMethod(){
if(...)
func(this::methodX); // or the second line
//func(() -> methodX());
else
func(this::methodY); // or the second line
//func(() -> methodY());
}

void func(Runnable x) {
x.run();
}

public void methodX() {
// do something
}

public void methodY() {
// do something
}

关于java - Java中如何将函数引用作为需要在调用者函数内部调用的参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28781070/

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