【发布时间】:2014-06-18 02:55:00
【问题描述】:
我无法理解“对象数组”和“相同对象的数组列表”类型的区别。例如我有接口 X:
public interface X {
public void implemntX();
}
类 XYZ 实现 X:
public class XYZ implements X{
@Override
public void implemntX() {
// TODO Auto-generated method stub
}
}
以下代码完美运行:
X arraryOfX[] = new XYZ[10];
if(arraryOfX instanceof XYZ[]){
System.out.println("arraryOfX is instanceOF XYZ[]");
}else{
System.out.println("arraryOfX is NOT instanceOF XYZ[]");
}
Output: arraryOfX is instanceOF XYZ[]
但以下代码行给了我编译时错误:
ArrayList<X> arrayListOFX = new ArrayList<XYZ>();
ERROR: Type mismatch: cannot convert from ArrayList<XYZ> to ArrayList<X>
据我所知,ArrayList 内部使用数组,那么为什么类型不匹配错误会冒泡?
【问题讨论】:
-
这个other answer 也可能有帮助,因为它提供了数组和通用集合之间的比较。
-
顺便说一句,您有一个
array or references to Objects或ArrayList of references to Objects相同的引用可以出现在两者中。
标签: java arrays arraylist casting type-conversion