【发布时间】:2014-11-06 15:08:57
【问题描述】:
我有一个 Node 类:
public class Node<T extends MySuperClass> {
private T data;
private Node<? extends MySuperClass> parent;
private List<Node<? extends MySuperClass>> children;
public Node(T data, Node<? extends MySuperClass> parent, List<Node<? extends MySuperClass>> children) {
this.data = data;
this.parent = parent;
this.children = children;
}
public T getData() {
return data;
}
public Node<? extends MySuperClass> getParent() {
return parent;
}
public List<Node<? extends MySuperClass>> getChildren() {
return children;
}
public void setData(T data) {
this.data = data;
}
public void setParent(Node<? extends MySuperClass> parent) {
this.parent = parent;
}
public void setChildren(List<Node<? extends MySuperClass>> children) {
this.children = children;
}
}
我需要创建上面定义的通用节点的映射。我必须写这样的东西
List<Map<Long, Node<? extends MySuperClass>>> tree = new ArrayList<Map<Long, Node< extends MySuperClass>>>();
当我尝试将地图实例添加到列表中时
public MyClass extends MySuperClass{
}
Map<Long, Node<MyClass>> myMap = new HashMap<Long,Node<MyClass>>();
tree.add(myMap);
编译器给我以下信息:
The method add(Map<Long,Node<? extends MySuperClass>>) in the type List<Map<Long,Node<? extends MySuperClass>>> is not applicable for the arguments (Map<Long,Node<MyClass>>)
语法上是正确的。我不明白为什么它不起作用。
【问题讨论】:
-
我的错,答案已关闭,现在正在尝试思考..
-
你能修复这条线
Map<Long, Node<MyClass>> myMap = new ArrayList<Long,Node<MyClass>>吗?在那里写下你真正使用的东西。 -
@Tom 是的,这也困扰着我,但是如果他想使用 Map 中的方法(接口或类??)但他想要一个数组列表怎么办?
-
@AbdulAhmad 这一行甚至无法编译。如果他想要什么,那么他应该把它写在他的问题中,而不是在一些代码行上留下痕迹。顺便说一句:你不能混合数据类型(即在不相关的对象
B上使用类A的方法)。 -
是的,这段代码看起来并不准确。我的精简版编译得很好。初始化树的行在语法上不正确。 OP,你能把它改成一个不能编译的最小例子吗?
标签: java generics dictionary