有没有一种方法可以动态实例化抽象类的所有子类?
我目前所拥有的类似于这个:
但是如果我想实例化所有扩展Command的类而不是一个个输入它们并在每次添加命令时都将它们添加到列表中,该怎么办?
如果我可以动态地实例化它们,那么我还能动态地操作它们吗?例如:一旦实例化了每个类,就将每个类添加到列表中。
或者有没有更好的设计方法可以以更简单的方式实现我想要的功能?
编辑:@Ash的解决方案在IDE中完美运行,但在使用jar时却无法正常工作。为使其在两种情况下均可运行,您只需更改的位置即可。
希望这有助于某些人!
我目前所拥有的类似于这个:
public class CommandHandler {
private Command info = new Info();
private Command prefix = new Prefix();
private Command roll = new Roll();
private Command coin = new Coin();
private Command invite = new Invite();
private Command quit = new Quit();
private Command restart = new Restart();
}
抽象父类大致如下:
public abstract class Command {
protected String name;
protected String arguments;
protected abstract void execute();
}
但是如果我想实例化所有扩展Command的类而不是一个个输入它们并在每次添加命令时都将它们添加到列表中,该怎么办?
如果我可以动态地实例化它们,那么我还能动态地操作它们吗?例如:一旦实例化了每个类,就将每个类添加到列表中。
或者有没有更好的设计方法可以以更简单的方式实现我想要的功能?
编辑:@Ash的解决方案在IDE中完美运行,但在使用jar时却无法正常工作。为使其在两种情况下均可运行,您只需更改的位置即可。
classPathList.addAll(ClasspathHelper.forClassLoader());
to
classPathList.addAll(ClasspathHelper.forJavaClassPath());
希望这有助于某些人!