我已經定義,像這樣一個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