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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© lovecx24 中级黑马   /  2013-12-5 21:03  /  1078 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

最近在学习泛型,写了一个程序,却抛出了ClassCastException,求解?
  1. List<String>[ ] isa = new ArraylList[10];
  2. Object[ ] oa=(Object [ ]) isa;
  3. List<Integer> li = new ArrayList<Integer>();
  4. li.add(new Integer(3));
  5. oa[i]=li;
  6. String s=isa[1].get(0);
复制代码



3 个回复

倒序浏览
我第一次见集合能这么写的:
要存String类型的数组是泛型为String[ ] 而不是在List后面加[ ]
思路都有问题,请问同学是看书么?
要是看的书,我就推荐你去看看毕向东老师的视频,或者去听黑马免费提供的基础课,晚上8点多YY有,一期是15天。

评分

参与人数 1技术分 +1 收起 理由
狼王 + 1

查看全部评分

回复 使用道具 举报
  1. List<String>[ ] isa = new ArraylList[10];  //有一个错误 ArrayList   //好比建立了一个女人
  2. Object[ ] oa=(Object [ ]) isa;                                                           //这里给女人穿上女人的衣服
  3. List<Integer> li = new ArrayList<Integer>();                                   //建立一个男人
  4. li.add(new Integer(3));
  5. oa[i]=li;                                                                                         //给男人穿上女人的衣服
  6. String s=isa[1].get(0);
复制代码
                                                    //  当脱了衣服是男人还是男人
要看清它的本质,

评分

参与人数 1技术分 +1 黑马币 +3 收起 理由
狼王 + 1 + 3 赞一个!

查看全部评分

回复 使用道具 举报
  1. import java.util.*;
  2. public class Demo {
  3.         public static void main(String[] args) {
  4.                 List<String>[] isa = new ArrayList[10];  // 创建一个List<String>数组
  5.                 for(List<String> s : isa)
  6.                 System.out.println(s);       // 输出验证,每个List<String>都为null
  7.                 /*        向上转型,导出类转型成基类
  8.                  * 向上转型一句话总结“新类是现有类的一种类型”
  9.                  * 专有类转型成通用类,会保留导出类的实现逻辑
  10.                  * List<Integer> li = new ArrayList<Integer>();也是一种向上转型
  11.                  */
  12.                 Object[] oa = (Object[]) isa; // 向上转型,java中,引用数据类型都是object的导出类
  13.                 List<Integer> li = new ArrayList<Integer>();
  14.                 li.add(new Integer(3));
  15.                 oa[0] = li;
  16.                 /*以上代码,把new Integer(3)添加到List<Integer>的li中,
  17.                  * 再把li赋值给oa[0],但是li中数据是Integer,oa[0]是List<String>,数据是String
  18.                  * Integer不能赋值给String,所以会出现ClassCastException类转换异常
  19.                  */
  20.                 String s = isa[0].get(0);
  21.         }
  22. }
复制代码

评分

参与人数 1技术分 +1 黑马币 +3 收起 理由
狼王 + 1 + 3 很给力!

查看全部评分

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