我试图通过Class对象调用抽象方法。
所以我的抽象类如下:
public abstract class Module implements SimpleModule{
public abstract void run();
}
现在我有一个实现这个抽象类的类。
我已经使用Reflection来让所有类实现我的抽象类'模块'。我已将所有结果存储如下:
private Set<Class<? extends Module>> modules = new HashSet<>();
现在我想知道的是如何运行抽象方法&#39; run()&#39;在抽象类&#39;模块&#39;中定义通过这张地图。我做了一个循环,循环遍历所有这些类,如下所示:
for(Class<? extends Module> clazz : modules){
//Here I want the 'run' method to be called.
}
任何人都可以帮我吗?我会很感激。感谢
答案 0 :(得分:0)
我认为你应该这样做。
Module
类的一些具体实现,这样您实际上可以使用某些已定义的行为调用run()
。 Module
的实例,但您需要稍后转换它们以获取特定类的已定义run()
行为。 具体实施示例
class MyModule extends Module {
public void run() {
// TODO: Implement this
}
}
然后,在代码的其余部分中,您可以使用简单的接口来定义集合,以表明此集合包含实现SimpleModule
的任何内容,我认为这是run()
方法最初的位置从。
Set<SimpleModule> modules = new HashSet<>();
modules.add(new MyModule());
for(SimpleModule m : modules){
m.run();
}