は、私は次のコードを記述するために、よりエレガントな方法があればお願いしたいと思い属性:Javaのコレクションを持つ多型は
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);
}
}
問題は、私は、例えば持っている場合:
class Result {
Node node;
}
を呼び出してから、メイン・コール
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);
}
私が望むように動作しません。まあ私も行うことができます:
newnode = result.node
((InnerNode)newnode).list.add((RoutingObject)object);
が、その後、私は私のより複雑なコードでも多くの変数を持っているでしょう...
これはジェネリックの仕事です。 –
あなたのクラスデザインは絡まっています:それらの内部クラスを自分のファイルに移動してトップレベルのクラスにします。その後、ジェネリックを使用します。 – Bohemian