黑马程序员技术交流社区

标题: 大家看看哪里错了啊 [打印本页]

作者: 张东贤    时间: 2013-3-26 20:51
标题: 大家看看哪里错了啊
List<String>[] lsa = new List<String>[10]; // illegal
Object[] oa = lsa;  // OK because List<String> is a subtype of Object
List<Integer> li = new ArrayList<Integer>();
li.add(new Integer(3));
oa[0] = li;
String s = lsa[0].get(0);



跑出ClassCastException

作者: itserious    时间: 2013-3-26 21:10
你主要错
1.不能定义带泛型的数组。
2.还有就是你定义的List<String>中的泛型是String
3.而你的List<Integer> li = new ArrayList<Integer>(); 中泛型中存放的却是Integer
4.你 lsa[0].get(0); 取出的是Integer,而你却用String s 来接受,
这样肯定会抛类型转换异常了!

下面是改了后的代码:

package test;

import java.util.ArrayList;
import java.util.List;

public class Teat5 {

        public static void main(String[] args) {
               
                //你这里是编译通不过的。不能是带泛型的数组。Cannot create a generic array of List<String>
                List[] lsa = new List[10]; //new List<String>[10];
                Object[] oa = lsa;  //

                //List<String>[] lsa = new List<String>[10];
                List<Integer> li = new ArrayList<Integer>();
                li.add(new Integer(3));
                oa[0] = li;
                //String s = lsa[0].get(0);
                Integer s = (Integer) lsa[0].get(0);
                System.out.println(s);

        }
}

运行结果:3




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2