就像上面写的代码一样,他包装类内部 有一个array类的引用 ,用来记录下一个对象的地址,如果你两个对象都不一样,他用什么类型去记录?当然可以用object来记录,可是这样以来,你取出来的时候你知道这个object包装类,里面包装的是哪个类型吗,作者: 风乐 时间: 2013-5-23 21:48
楼主,你应该学会看异常,一般上面都会标明是哪里错的。你的代码运行结果
Exception in thread "main" java.lang.ClassCastException: java.lang.Character can
not be cast to java.lang.String
at Test.main(Test.java:19)
显然是迭代时候出错了。借用板凳的代码
Iterator<String> it = al.iterator();// ①这个地方的<String>限定了你的对象时string类型,要去掉
//因为泛型的擦除功能,<String>只用于编译检查,所以编译通过运行了就没有了,所以这里无关紧要
while (it.hasNext()) {
// ②这里再次把元素付给String类型的变量s, 去掉String s,直接打印it.next()
//因为①处的泛型存在,所以这里编译通过,如果没有泛型则这里需强转。到这里你应该知道了吧,抛得异常就是类型转换异常
String s = it.next();