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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 董志超 中级黑马   /  2012-10-28 07:27  /  1278 人查看  /  2 人回复  /   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));
    }
}

2 个回复

倒序浏览
这个问题太犀利了,以前都没有考虑过!
我想应该是自动装箱的功能吧!
list.add("1.1");只所以成功,是因为Integer中有个Integer(String s) 方法,
而 list.add(1.1);失败,是因为String中没有相关的构造方法。


回复 使用道具 举报
这个问题还真是不一般的犀利啊。。
那个1.1都把我搞蒙了。。我算是知道泛型的好处了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马