gpt4 book ai didi

java - 如何从 Java 中扩展抽象类的 Class 对象运行抽象方法?

转载 作者:太空宇宙 更新时间:2023-11-04 12:59:57 25 4
gpt4 key购买 nike

我正在尝试通过 Class 对象调用抽象方法。

所以我的抽象类如下:

public abstract class Module implements SimpleModule{

public abstract void run();

}

现在我有一个类实现这个抽象类。

我使用反射来获取实现我的抽象类“模块”的所有类。我已将所有结果存储如下:

private Set<Class<? extends Module>> modules = new HashSet<>();

现在我想知道的是如何通过这个映射运行抽象类“Module”中定义的抽象方法“run()”。我做了一个循环,循环遍历所有这些类,如下所示:

for(Class<? extends Module> clazz : modules){
//Here I want the 'run' method to be called.
}

有人可以帮我解决这个问题吗?我将非常感激。谢谢

最佳答案

我认为你应该这样做。

  1. 定义抽象 Module 类的一些具体实现,这样您就可以实际调用 run() 并执行一些已定义的行为。
  2. 存储对象本身而不是类,因为虽然所有类都可能是模块的实例,但您需要稍后对它们进行转换才能获取特定类的定义run()行为。
<小时/>

具体实现示例

class MyModule extends Module {
public void run() {
// TODO: Implement this
}
}
<小时/>

然后,在代码的其余部分中,您可以使用简单的接口(interface)来定义集合,以表示此 Set 包含实现 SimpleModule 的任何内容,我认为这是 run() 方法最初的来源。

Set<SimpleModule> modules = new HashSet<>();
modules.add(new MyModule());

for(SimpleModule m : modules){
m.run();
}

关于java - 如何从 Java 中扩展抽象类的 Class 对象运行抽象方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35022843/

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