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)
我希望你理解我的问题.谢谢.
一种方法是扩展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)
您必须声明一个扩展类,Node以便您可以使用该类的名称:
class StringNode extends Node<String, StringNode> {
}
Run Code Online (Sandbox Code Playgroud)