我已经定义,像这样一个TreeNode类:泛型与同一基类
class TreeNode<T extends MyClass> {
public T element;
public TreeNode<? extends MyClass> parent;
public ArrayList<TreeNode<? extends MyClass>> children;
}
我想知道是否有限制所有树节点来扩展MyClass
泛型类型变量更简单的方法?不得不写出ArrayList<TreeNode<? extends MyClass>>
是非常乏味的。我不能只是做ArrayList<TreeNode<T>>
,因为那么树不能包含具有不同继承MyClass的节点。
我试图做这样的事情: public static const Class NODE_CLASS = TreeNode<? extends TreeNode>.class;
但我不认为你可以使用泛型作为类对象的一部分。
Someting synonym to C++'s typedef
I guess,I.e. typedef TreeNode<? extends MyClass> NodeClass;
说实话,如果'T'不匹配树中的节点,我就没有看到使用泛型的要点。鉴于此,'element'应该只是'MyClass'。 – 2013-03-01 13:24:43
啊,当然,只是让他们成为所有的基本类型! – Lerp 2013-03-01 13:26:35
正如一个旁注:我会用'List <...>'替换'ArrayList <...>'。 – Thomas 2013-03-01 13:27:11