我想從我的超類創建一個子類的新實例。這是我的超級類Java:在靜態方法中從超類創建一個子類的實例
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'。 – assylias
什麼在factory.txt? –