class Test45 {
public static void main(String args[]) {
Data data = new Data();
ArrayList list = new ArrayList(); //将ArrayList加泛型,明确说明里面装的是Data类型
for (int i = 100; i < 103; i++) {
data.val = i;
list.add(data);
}
//Type mismatch: cannot convert from element type Object to Data
// ArrayList不加泛型时默认存放的是Object类型,父到子要加类型转换。
for (Object d : list) {
System.out.println(((Data)d).val);
}
}
}作者: 蒋珍珍 时间: 2014-3-31 11:41
这句话的含义就是:类型不匹配:不能从Object的元素类型转换为Data类型。
其实在你注释的那句话上,不加泛型也可以,下面遍历list的时候用强制类型转换也是可以的。
//改写后的代码
for(Object obj: list){
Data d = (Data)obj; //这里需要强制转换
System.out.println(d.val);
}作者: bjfanxc 时间: 2014-4-1 16:46