Javaクラスに単純なTreeを実装しようとしています。しかし、私はこのツリークラスを拡張する別のクラスをしたい。Javaクラスが自己参照型クラスを継承しています
私はこのような木の再帰作ってるんだ:
class Tree<T> {
public T data;
public List<Tree<T>> children;
public Tree(T data){
this.data = data;
}
}
はしかし、私はこのようなクラスを作ると言う:
class WeightedTree<T> extends Tree<T>
それは子供たちが、すべての定期的な木ではなく、加重木あるのです。 OOP原則でこれを達成する方法はありますか?
Tree<String, ?> tree = new Tree<>();
それとも、自己の種類を抽象基底クラスを作ることができます:あなたはTree
をインスタンス化する必要がある場合は、ワイルドカードを使用することができます
class Tree<T, SELF extends Tree<T, SELF>> {
public T data;
public List<SELF> children;
}
class WeightedTree<T> extends Tree<T, WeightedTree<T>> {}
:
ワイルドカードの例は機能しません。このようなタイプはインスタンス化できません。 – ruakh
@ruakhそれが推測されていれば、あなたはすることができます。 – shmosel
私の言葉は、あなたが正しいです!とても奇妙です。訂正してくれてありがとう。 :-) – ruakh