我需要写一些进口商。他们需要所有相同的初始化。所以我尝试编写一个抽象类,它执行所有初始化并且还有main方法,因此所有子类只需要实现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
}
}
当然,它无法创建此抽象类的实例(new AbstractImporter()
)。
有人知道如何解决这个问题吗? TIA!
答案 0 :(得分:4)
显然你需要一个具体的类 - 匿名或其他。
最好将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();
}
....
}
}
答案 1 :(得分:1)
new AbstracterImporter() {
public void run() {
// ...
}
};
我为当前在移动设备上缺乏格式化而道歉。
答案 2 :(得分:0)
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();
}
}
答案 3 :(得分:0)
您无法创建抽象类的实例。
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();
}
}