У меня есть класс TreeNode:
public abstract class TreeNode<T>{
.
.
.
public Collection<TreeNode<T>> children;
public void clear(){
if(children == null)
return;
Iterator<TreeNode<T>> iterator = children.iterator();
while(iterator.hasNext()){
TreeNode<T> node = iterator.next();
node.clear();
}
children.clear();
}
.
.
.
}
Затем у меня есть класс ListTreeNode:
public class ListTreeNode<T> extends TreeNode<T>{
.
.
.
public ListTreeNode(T data, List<ListTreeNode<T>> children){
this.data = data;
this.root = null;
this.children = children;
this.childIndex = 0;
}
.
.
.
}
Я получаю сообщение об ошибке компилятора о том, что я не могу преобразовать из List<ListTreeNode<T>>
в Collection<TreeNode<T>>
.Разве я не смогу, так как List
является подынтерфейсом Collection
, а ListTreeNode
является подклассом TreeNode
?Кроме того, у меня есть соответствующий класс SetTreeNode
, который использует Set
вместо List
, и в соответствующем конструкторе, где у меня есть this.children = children;
.
, нет ошибок.