假設我有以下的基類:當構造函數在拋出異常之前部分成功時會發生什麼?
public class RootClass {
private List<RootClass> children = new ArrayList<RootClass>();
public RootClass(RootClass parent) {
if (parent != null) {
parent.addChild(this);
}
}
public void addChild(RootClass child) {
children.add(child);
}
}
和我有以下子類:
public class ChildClass extends RootClass {
public ChildClass(RootClass parent) {
super(parent);
doInitialization();
}
private void doInitialization() {
//Might throw an unchecked exception
}
}
現在,假設我創建一個ChildClass
拋出異常的實例,但被捉住在構造函數之外(在代碼深處某處,如此遙遠,它不知道ChildClass
尚未完全構建)。現在父母在其children
列表中有一個參考,其中ChildClass
沒有其構造函數運行。
這些情況應該如何處理?這只是一個糟糕的設計方案嗎?或者這是否有點意義?我不想重構整個應用程序,在構造函數完成後將子項添加到父項。
可能的[關於Java中的構造函數]的副本(http://stackoverflow.com/questions/1371369/about-constructors-in-java) –
「可能」重複的含義是什麼? – irreputable
這種問題需要更多的投票 – Pacerier