Java 如何编写抽象的主类
我需要写信给进口商。它们需要所有相同的初始化。因此,我尝试编写一个抽象类,该类完成所有初始化并具有main方法,因此所有子类只需实现Java 如何编写抽象的主类,java,main,abstract,Java,Main,Abstract,我需要写信给进口商。它们需要所有相同的初始化。因此,我尝试编写一个抽象类,该类完成所有初始化并具有main方法,因此所有子类只需实现run()即可完成其特定的导入工作: public abstract class AbstractImporter { public AbstractImporter() { // Initialization } public abstract void run(); public static void ma
run()
即可完成其特定的导入工作:
public abstract class AbstractImporter {
public AbstractImporter() {
// Initialization
}
public abstract void run();
public static void main(String[] args) {
AbstractImporter importer = new AbstractImporter();
importer.run();
}
}
public class ConcreteClass() {
public void run() {
// Do some importing
}
}
当然,它无法创建此抽象类的实例(newabstractimporter()
)
有人知道如何解决这个问题吗?蒂亚
new AbstracterImporter() {
public void run() {
// ...
}
};
我为当前移动设备上缺少格式表示歉意。显然,您需要一个具体的类-匿名或其他
public abstract class AbstractImporter {
public AbstractImporter() {
// Initialization
}
public abstract void run();
public static void main(String[] args) {
AbstractImporter importer = new AbstractImporter(){
public void run() {
System.out.println("Anonymous implementation");
}
};
importer.run();
}
}
最好将main方法移动到另一个类,并基于数据(特定于域的或常量)实例化相应的具体类,然后运行它。这样,每个实现都可以独立于其他实现
public abstract class AbstractImporter {
public AbstractImporter() {
// Initialization
}
public abstract void run();
}
public class ConcreteImporter1 extends AbstractImporter {
public void run() {
//do something
}
}
public class ImporterMain() {
public static void main(String[] args) {
AbstractImporter importer = createImporter(args[1]);
importer.run();
}
private static AbstractImporter createImporter(String type) {
if (type.equals("1")) {
return new ConcreteImporter1();
}
....
}
}
不能创建抽象类的实例
public abstract class AbstractImporter {
public AbstractImporter() {
// Initialization
}
public abstract void run();
}
public class ConcreteClass extends AbstractImporter{
public void run(){
//Implementation
}
public static void main(String args[]){
AbstractImporter ai = new ConcreteClass();
ai.run();
}
}
你希望main方法做什么?@JBNizet我喜欢在具体的子类中避免main方法,因此这个抽象超类的main方法应该实例化子类并调用run方法。你将如何在父类main方法中实例化子类??你确定你想做什么吗?@技术白痴不,你是对的。可能太晚了……;)抱歉,我没有注意到,我不是想在之后编辑它,但我打字了,是想在
运行之前添加一个void
,谢谢你的回答。当我用一个有效的run()
方法创建这个类的子类,并调用它的超类的main方法时,就会调用匿名类的run()
方法,而不是我的子类的方法-class@t777:当然,您的子类没有运行!您必须创建子类的对象,而不是匿名类的对象。@HoverCraftFullOfels,因此子类需要自己的run方法。但是我希望避免这种情况(如果可能)。@t777:re“因此子类需要自己的run方法。”
——这没有任何意义。如果希望实例是子类的实例,则必须使其成为该子类的实例,方法是对该子类调用new,或使用某种工厂方法。