List
list1.add(123);
list1.add("cccc");
list1.add("cc11");
for (int i = 0; i
}
这个是代表你的这个list类型是String 类型,但是你所new的类型不确定,你应该这样写List
List list1=new ArrayList
list1.add("cccc");
list1.add("cc11");
list1.add(123);
for (int i = 0; i
}
而这个,就是说你new 的类型是String ,而list的类型是不确定的,它会自动转换,不过在java中写代码的时候list下方肯定会报敬告,说可能会发生异常
所以最好两边类型都确定为一种类型.
当你不确定类型的时候,请按照以下方式
List
泛型,就是在编译之前做类型检查。
相比之前没有泛型的情况,List.get(int) 方法只能返回Object对象:
List l = new List();
l.add(new Student());
Object o = l.get(0);
Student s = (Student)s;
如果add进去的类型和get出来后强转的类型不匹配,则会出现运行时错误,不能在编译期检查到。
现在用泛型:
List
l.add(new Student());
Student s = l.get(0);
避免了强转的代码,而且可以在编译的时候就检测到类型转换的错误。
你提出的问题,这种编译错误类似于将一个更大类型赋值给更小的类型,将父类赋值给子类的关系: List
实际上是这样的 List
List
new ArrayList