簡體   English   中英

如何在Java中實例化通用遞歸類

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM