我的问题是我使用的是非我开发的类(我从Microsoft Azure SDK for Java中获取)。该类称为Node,您可以看到它here。
正如您所看到的,该类是一个递归声明的泛型类,如下所示:
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<...>>>>;
我希望你理解我的问题。感谢。
答案 0 :(得分:5)
一种方法是扩展Node
,如:
class MyNode<T> extends Node<T, MyNode<T>> {
}
然后将其实例化为:
Node<String, MyNode<String>> node1 = new MyNode<String>();
或
MyNode<Integer> node2 = new MyNode<Integer>();
答案 1 :(得分:4)
您必须声明一个扩展Node
的类,以便您可以使用该类的名称:
class StringNode extends Node<String, StringNode> {
}
答案 2 :(得分:2)
您可以在变量声明中使用通配符:
Node<String, ?> n = new Node<>();
或者您可以创建一个显式子类
class StringNode extends Node<String, StringNode> { }
并通过
实例化它Node<String, ?> n = new StringNode();
或
StringNode n = new StringNode();