gpt4 book ai didi

java - 如何在Java中通过名称(字符串)调用方法?

转载 作者:行者123 更新时间:2023-12-01 06:35:15 25 4
gpt4 key购买 nike

A的每个实例都有一个类B的实例。 A 应根据其成员变量 method_num 调用 B 中的不同方法。这是一个实现我想要的功能:

public class A {
private B myB = new B();
public int method_num = 1;
public callBMethod() {
if ( method_num == 1 )
myB.method1();
else
myB.method2();
}
}

public class B {
public method1() { }
public method2() { }
}

但我不想执行 myA.method_num = 1,而是希望能够以某种方式直接传递 B 的 method1method2。我怎样才能做到这一点?

最佳答案

如果您不想使用反射(这是一个很好的目标),那么enum有一些巧妙的功能,允许您设置enum 作为代理。

public class A {
private B myB = new B();
public int method_num = 1;

public void callBMethod() {
// Could do it by name.
BMethods.valueOf("method1").call(myB);
// Or by number.
BMethods.values()[method_num].call(myB);
}

}

enum BMethods{
method1 {
@Override
public void call(B b) {
b.method1();
}
},
method2 {
@Override
public void call(B b) {
b.method2();
}
};

public abstract void call (B b);
}

public class B {
public void method1() {
}

public void method2() {
}

}

关于java - 如何在Java中通过名称(字符串)调用方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18718217/

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