public class Node {
public Node right;
}
public class SpecialNode extends Node {
public String specialLabel;
}
public class Testmain {
public static void main(String[] args) {
Node n1 = new Node();
Node n2 = new Node();
Node n3 = new Node();
n1.right=n2;
n2.right=n3;
// some calculations --> now n2 has to become a SpecialNode, how ???
}
}
我正在實現一個鏈接列表與節點,其中每個節點都知道它的右邊的鄰居。我創建了一個列表:節點n1->節點n2->節點n3。創建列表後,它只包含Node類型的元素。現在我想告訴節點n2是一個特殊節點,以便提供一個specialLabel。 downcast之後,列表應該看起來像Node n1-> SpecialNode n2-> Node n3。 這怎麼辦?從超類下降:節點到特殊節點在鏈表
(請注意,N2不知道它的左鄰,而且請注意,我要告訴N2是列表的創建經過特殊所以初始化它作爲超類的節點後,因爲我需要做出決定之前必須做一些計算哪個節點將是特別的。)
更換''N2與'SpecialNode'是不是我的選擇一個新的實例,我將不得不尋找它的左鄰設置'right'屬性的新實例,並刪除舊的節點類型'節點'。搜索左邊的鄰居從該列表的頭部開始。但是我的列表中有3個以上的節點(如下例),我在這個列表中有數千個元素,我甚至簡化了這個問題,實際上我在樹中有節點。放置新電線將非常耗時。 – user1665066