繁体   English   中英

Java类继承自引用类

[英]Java Class inheriting self-referencial class

我试图在Java类中实现一个简单的Tree。 但是,我想要另一个类来扩展此Tree类。

我正在像这样递归树:

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原理来实现?

您可以执行以下操作:

class Tree<T, SELF extends Tree<T, SELF>> {
    public T data;
    public List<SELF> children;
}

class WeightedTree<T> extends Tree<T, WeightedTree<T>> {}

如果您需要实例化Tree ,则可以使用通配符:

Tree<String, ?> tree = new Tree<>();

或者,您可以创建一个具有自类型的抽象基类,并为TreeWeightedTree单独的子类。

/* Package */ abstract class TreeBase<T, TREE_T extends TreeBase<T, TREE_T>> {
    public T data;
    public List<TREE_T> children;

    public TreeBase(T data) {
        this.data = data;
    }
}

public class Tree<T> extends TreeBase<T, Tree<T>> {
    public Tree(T data) {
        super(data);
    }
}

public class WeightedTree<T> extends TreeBase<T, WeightedTree<T>> {
    public WeightedTree(T data) {
        super(data);
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM