【发布时间】:2012-11-11 21:20:59
【问题描述】:
我正在尝试从我的超类创建一个子类的新实例。这是我的超级班
public abstract class Worker {
String world;
protected abstract void onLoad(Scanner read);
public static Worker load(Scanner read) {
// I want to create the instance of my sub class here and call it w
w.onLoad(read);
return w;
}
public void setWorld(String world) {
this.world = world;
}
}
这是我的子类
public class Factory extends Worker {
@Override
protected onLoad(Scanner read) {
setWorld(read.readline());
}
}
这就是我想要对这些类做的事情。
public class MainClass{
public List<Factory> loadFactories() {
List<Factory> facts = new ArrayList<Factory>();
Scanner read = new Scanner(new FileInputStream("factory.txt"));
while(read.hasNextLine()) {
Factory f = (Factory)Factory.load(read);
facts.add(f);
}
read.close();
return facts;
}
}
有什么方法可以做到这一点而无需重新开始?感谢您的帮助。
【问题讨论】:
-
您还没有将
Worker设为子类。 -
如果您希望 Factory 成为 Worker 的子类,一个好的开始是这样写:
class Factory extends Worker。 -
这里应该是什么的子类?
-
对不起,我写得太快了。
-
@user1816686 很难理解您要达到的目标。
Factory.load(read)实际上调用了Worker.load(read),它返回了一个NoInputWorker,你将它分配给了一个Factory...一些拼图仍然丢失...
标签: java inheritance static-methods