gpt4 book ai didi

Java,将非静态方法传递给另一个方法

转载 作者:行者123 更新时间:2023-12-01 17:15:27 24 4
gpt4 key购买 nike

这是我的程序的设置。我想告诉方法 checkerMethod 使用哪种方法,来自 method1 或 method2。

public Class executeCode{
World brave = new World();
brave.checkerMethod(Method method1);
}

我的世界级如下所示。

public World{  //  changed to World from World() 

public World(){
//make world
}

public methodChecker(Method method){
//code involving using method1 or method2
//methods 1 and 2 are not static, so I would need to call this.method1()
}

public void method1(){//method here}
public void method2(){//method here}

}

我也见过类似的事情,here, for instance

上面的解决方案对于传递非静态方法显然不起作用。

我有一种感觉,如果我重新安排事情可能会起作用,但我无法弄清楚。任何帮助将不胜感激!

最佳答案

无需传递方法并以反射方式执行操作,只需传递一个包装该方法并关闭 this 的可调用对象即可。

如果您要传递的所有方法都是 void 零参数方法,您只需使用 java.lang.Runnable 即可

// final local variables are available to inner classes
final World current = this;

World.methodChecker(
new Runnable() {
public void run() {
current.method1();
// Or alternatively {World.this.method1();}
}
});

如果你需要实际返回一个值或者传递参数,那么 Guava 的Function是个不错的选择。

关于Java,将非静态方法传递给另一个方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22485715/

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