只要遇到这个问题:
List<DataNode> a1 = new ArrayList<DataNode>();
List<Tree> b1 = a1; // compile error: incompatible type
其中 DataNode 类型是 Tree 的子类型。
public class DataNode implements Tree
令我惊讶的是,这适用于 array:
DataNode[] a2 = new DataNode[0];
Tree[] b2 = a2; // this is okay
这有点奇怪,有人能解释一下吗?