黑马程序员技术交流社区
标题:
java 泛型中List问题
[打印本页]
作者:
〃Mr.Zぐ
时间:
2013-4-19 13:27
标题:
java 泛型中List问题
问题:为什么在一个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));
}
}
作者:
伊廷文
时间:
2013-4-19 19:14
就是看不到啊
作者:
付鑫鑫
时间:
2013-4-22 21:17
你上面的异常是类型不对,因为你设定的泛型是String类,而后,你 go(list),调用的方法,里面又是添加Double包装类,所以会ClassCastException异常.
作者:
付鑫鑫
时间:
2013-4-22 21:24
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));
}
}
作者:
熊永标
时间:
2013-4-22 23:31
首先,ClassCastException是类型转换异常.因为在调用go方法时,把list为integer类型的集合传给go方法时,由于泛型被擦除了,所以添加了一个字符串,此时集合中就有两个无素,一个是字符串类型,一个是整型,当再使用有泛型的list来取得行一个元素时,因为有泛型的限定,所以编译不通过.报ClassCastException异常.
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2