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 型の要素だけが含まれます。ここで、specialLabel を提供するために Node n2 を SpecialNode にする必要があります。ダウンキャスト後、リストは Node n1-> SpecialNode n2-> Node n3 のようになります。これはどのように行うことができますか?
(n2 はその左側の隣人を認識していないことに注意してください。また、リストの作成後に n2 を特別なものにする必要があることに注意してください。そのため、スーパークラスのノードとして初期化した後、どのノードを使用するかを決定する前にいくつかの計算を行う必要があります。特別であること。)