gpt4 book ai didi

JAVA:调用未知对象类方法并传递它的参数

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:19:54 25 4
gpt4 key购买 nike

目标很简单,我想创建一个动态加载类的方法,访问它的方法并传递它们的参数值并在运行时获取返回值。

将被调用的类

class MyClass {

public String sayHello() {

return "Hello";
}

public String sayGoodbye() {

return "Goodbye";
}

public String saySomething(String word){
return word;
}
}

主类

public class Main {


public void loadClass() {
try {

Class myclass = Class.forName(getClassName());

//Use reflection to list methods and invoke them
Method[] methods = myclass.getMethods();
Object object = myclass.newInstance();

for (int i = 0; i < methods.length; i++) {
if (methods[i].getName().startsWith("saySome")) {
String word = "hello world";

//**TODO CALL OBJECT METHOD AND PASS ITS PARAMETER**
} else if (methods[i].getName().startsWith("say")) {

//call method
System.out.println(methods[i].invoke(object));
}

}

} catch (Exception ex) {
ex.printStackTrace();
}
}

private String getClassName() {

//Do appropriate stuff here to find out the classname

return "com.main.MyClass";
}

public static void main(String[] args) throws Exception {

new Main().loadClass();
}
}

我的问题是如何调用带有参数的方法并传递它的值?还获取返回值及其类型。

最佳答案

我认为您只是忽略了一个事实,即您可以将参数作为 Object[] 传递给 invoke:

Object result = methods[i].invoke(object, new Object[] { word });

或者使用可变参数,如果你愿意的话:

Object result = methods[i].invoke(object, word);

(以上两个调用是等价的。)

请参阅 Method.invoke 的文档了解更多详情。

关于JAVA:调用未知对象类方法并传递它的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13796536/

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