A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张东贤 中级黑马   /  2013-3-26 20:51  /  1231 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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

点评

如果问题未解决,请继续追问回复者,如果问题已经解决,请将分类改为“已解决”,谢谢  发表于 2013-3-27 19:54

评分

参与人数 1技术分 +1 收起 理由
贾文泽 + 1

查看全部评分

1 个回复

倒序浏览
你主要错
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

评分

参与人数 1技术分 +1 收起 理由
贾文泽 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马