我有一个称为Trader
的抽象类,它的作用类似于带服务器(StockMarket)的客户端,并且我想在Trader类中声明继承自该类的所有类都需要实现一个主入口点,以便它们可以跑。
问题是,如果我写:
public static abstract void main(String[] args) throws Exception;
它给出一个错误,仅允许可见性修改器。但是,如果我删除了静态修饰符,则它不能作为允许它运行的主要入口点。
那么如何声明抽象类的所有子类必须实现main方法?
最佳答案
你不能
我要做的是在Trader中声明一个抽象的非静态方法:
public abstract void run(String[] args) throws Exception;
然后声明一个单独的将实例化实例的主类,并调用run方法:
class RunTrader {
private static final String DEFAULT_CLASS = "...";
public static void main(String[] args) {
try {
String className = System.getProperty("main-trader-class", DEFAULT_CLASS);
Class<Trader> traderClass = (Class<Trader>)Class.forName(className);
Trader trader = traderClass.newInstance();
trader.run(args);
} catch (Exception e) {
// handle the exception
}
}
}