如何在Java中实例化通用递归类

yce*_*sar 8 java generics recursion class

我的问题是我使用的是非我开发的类(我从Microsoft Azure SDK for Java中获取).该类称为Node,您可以在此处查看.

正如您所看到的,该类是一个递归声明的泛型类,如下所示:

public class Node<DataT, NodeT extends Node<DataT, NodeT>> {
      ...
}
Run Code Online (Sandbox Code Playgroud)

当我尝试实例化它时,我不知道该怎么做.我这样做但我知道这不是方法,因为它没有结束:

Node<String, Node<String, Node<String, Node<...>>>> myNode = new Node<String, Node<String, Node<String, Node<...>>>>;
Run Code Online (Sandbox Code Playgroud)

我希望你理解我的问题.谢谢.

Har*_*ezz 5

一种方法是扩展Node如下:

class MyNode<T> extends Node<T, MyNode<T>> {
}
Run Code Online (Sandbox Code Playgroud)

然后将其实例化为:

Node<String, MyNode<String>> node1 = new MyNode<String>();
Run Code Online (Sandbox Code Playgroud)

要么

MyNode<Integer> node2 = new MyNode<Integer>();
Run Code Online (Sandbox Code Playgroud)


Rad*_*def 4

您必须声明一个扩展类,Node以便您可以使用该类的名称:

class StringNode extends Node<String, StringNode> {
}
Run Code Online (Sandbox Code Playgroud)