gpt4 book ai didi

java - 如何使用通过 Class.forName(String) 获得的类的方法?

转载 作者:行者123 更新时间:2023-11-29 07:24:42 24 4
gpt4 key购买 nike

我需要使用通过 Class.forName() 方法获得的类中的方法。我给你举个例子:

public class Greeter {
public String getGreeting() {
return "Hello World!";
}
}

现在我想使用字符串动态获取此类并使用它的方法如下:

Class c = Class.forName("Greeter");
System.out.println(c.getGreeting());

现在这显然行不通了,因为 Java 还没有将该类识别为 Greeter 类。我将如何着手执行此操作而不必硬编码它是一个 Greeter 类的事实?

最佳答案

不是直接的,您需要 Class 的实例才能调用该方法。例如,

Class<?> cls = Class.forName("Greeter");
try {
Object o = cls.getConstructor(null).newInstance(null);
System.out.println(((Greeter) o).getGreeting());
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

您在评论中提到您“不知道”它是一个 Greeter。您应该针对通用接口(interface)进行编程,但是失败了;也可以通过名称获取方法。例如,

Object o = cls.getConstructor(null).newInstance(null);
Method m = cls.getMethod("getGreeting", null);
System.out.println(m.invoke(o, null));

关于java - 如何使用通过 Class.forName(String) 获得的类的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56104158/

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