gpt4 book ai didi

Java - 从名称创建对象并调用方法

转载 作者:行者123 更新时间:2023-12-02 04:18:41 24 4
gpt4 key购买 nike

我需要编写一段 Java 代码,根据给定的类名,创建该类型的对象并调用它的方法。

我使用了Java.lang.Class.cast(),但是该指令返回一个Object,并且Object类中没有我想要运行的方法(显然)。

我发布了一些代码来解释

import java.lang.reflect.*;

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

String className = "Test";
Class[] arguments = new Class[] { int.class, int.class };
Class klass = Class.forName(className);

Constructor constuctor = klass.getConstructor(arguments);
Object obj = constuctor.newInstance(new Object[] { 10, 20 });
klass.getClass().cast(obj).Run(); // <----- PROBLEM
// this works: ((Test)obj).Run();
}
}

class Test {
int a, b;
public Test(int a1, int b1) {
a = a1; b = b1;
}

public void Run() {
System.out.println("Run...");
System.out.println(a + " " + b);
}
}

提前致谢。

最佳答案

就像您使用 getConstructor() 获取 Constructor 对象一样,您可以使用 getMethod()< 获取 Method 对象getMethods()

Method m = klazz.getMethod("methodName", parameters);  // Parameters optional
m.invoke(obj, parameters); // Ditto

另一种选择是将对象(使用常规转换,您“永远”不需要使用Class.cast())转换为已知接口(interface)并以常规方式调用它。

关于Java - 从名称创建对象并调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33039683/

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