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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 〃Mr.Zぐ 中级黑马   /  2013-4-19 13:27  /  2244 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

问题:为什么在一个Integer的List里面插入一个String的对象读取成功而在一个String的List插入一个整数读取时抛出ClassCastException?

以下是在一个Integer的List里面插入一个String对象,读取正确。

public class IteratorTest2 {
    public static void go(List list)
    {
        list.add("1.1");
    }
    public static void main(String args[])
    {
        List<Integer> list=new ArrayList<Integer>();
        list.add(1);
        go(list);
        System.out.println(list.get(1));
    }
}
------------------------------------------------------------

以下是在一个String的List里面插入一个整型数,读取抛出异常。

public class IteratorTest2 {
    public static void go(List list)
    {
        list.add(1.1);
    }
    public static void main(String args[])
    {
        List<String> list=new ArrayList<String>();
        list.add("1");
        go(list);
        System.out.println(list.get(1));
    }
}

评分

参与人数 1技术分 +1 收起 理由
陈丽莉 + 1

查看全部评分

4 个回复

正序浏览
首先,ClassCastException是类型转换异常.因为在调用go方法时,把list为integer类型的集合传给go方法时,由于泛型被擦除了,所以添加了一个字符串,此时集合中就有两个无素,一个是字符串类型,一个是整型,当再使用有泛型的list来取得行一个元素时,因为有泛型的限定,所以编译不通过.报ClassCastException异常.
回复 使用道具 举报
package net.edu.csdn.it;

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

public class Demo1 {

       
            public static void go(List list)
            {
                list.add(1.1);                                                 //问题就出在这行,因为1.1是Double包装类,所以类型不对,所以会出这个异常                                       
            }
            public static void main(String args[])
            {
                List<String> list=new ArrayList<String>();                //泛型设定是String,所以集合中只能添加String类.所以会出这个异常java.lang.ClassCastException       
                list.add("1");
                go(list);                                                                       
                System.out.println(list.get(1));
            }
        }
回复 使用道具 举报
你上面的异常是类型不对,因为你设定的泛型是String类,而后,你 go(list),调用的方法,里面又是添加Double包装类,所以会ClassCastException异常.
回复 使用道具 举报
就是看不到啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马