I have a class 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();
}
.
.
.
}
I then have a class 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;
}
.
.
.
}
I get a compiler error saying that I cannot convert from List<ListTreeNode<T>>
to Collection<TreeNode<T>>
. Shouldn't I be able to, since List
is a subinterface of Collection
and ListTreeNode
is a subclass of TreeNode
? Also, I have a corresponding class SetTreeNode
which uses Set
instead of List
and there are no errors in its corresponding constructor where I have this.children = children;
.