Ich würde fragen, ob es eine elegantere Weg ist, den folgenden Code zu schreiben:Java - Polymorphismus mit Sammlung Attribute
public class MTree {
class MTreeObject {
double[] vector;
}
class RoutingObject extends MTreeObject {
double radius;
}
class LeafObject extends MTreeObject {
int id;
}
class Node {
LinkedList<MTreeObject> list;
}
class InnerNode extends Node {
LinkedList<RoutingObject> list;
}
class LeafNode extends Node {
LinkedList<LeafObject> list;
}
public static void main(String[] argv) {
MTreeObject object = new RoutingObject();
Node node = new InnerNode();
((InnerNode)node).list.add((RoutingObject)object);
}
}
das Problem ist, dass, wenn ich zum Beispiel:
class Result {
Node node;
}
und rufen dann in Haupt
public static void main(String[] argv) {
Result result = new Result();
MTreeObject object = new RoutingObject();
result.node = new InnerNode();
result.((InnerNode)node).list.add((RoutingObject)object);
}
es nicht die Art und Weise funktioniert ich will. Nun, ich könnte auch tun:
newnode = result.node
((InnerNode)newnode).list.add((RoutingObject)object);
aber dann hätte ich zu viel Variablen in meinem komplexeren Code ...
Dies ist ein Job für Generika. –
Ihr Klassendesign ist verworren: Verschieben Sie diese inneren Klassen in ihre eigene Datei und machen Sie sie zu Top-Level-Klassen. Dann verwende Generika. – Bohemian