[英]How to instantiate a generic recursive class in Java
我的問題是我使用的是非我開發的類(我從Microsoft Azure SDK for Java中獲取)。 該類稱為Node,您可以在此處查看 。
正如您所看到的,該類是一個遞歸聲明的泛型類,如下所示:
public class Node<DataT, NodeT extends Node<DataT, NodeT>> {
...
}
當我嘗試實例化它時,我不知道該怎么做。 我這樣做但我知道這不是方法,因為它沒有結束:
Node<String, Node<String, Node<String, Node<...>>>> myNode = new Node<String, Node<String, Node<String, Node<...>>>>;
我希望你理解我的問題。 謝謝。
一種方法是擴展Node
如:
class MyNode<T> extends Node<T, MyNode<T>> {
}
然后將其實例化為:
Node<String, MyNode<String>> node1 = new MyNode<String>();
要么
MyNode<Integer> node2 = new MyNode<Integer>();
您必須聲明一個擴展Node
的類,以便您可以使用該類的名稱:
class StringNode extends Node<String, StringNode> {
}
您可以在變量聲明中使用通配符:
Node<String, ?> n = new Node<>();
或者您可以創建一個顯式子類
class StringNode extends Node<String, StringNode> { }
並通過實例化它
Node<String, ?> n = new StringNode();
要么
StringNode n = new StringNode();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.