java 集合问题 ArrayList

qjm201000 发布于 2013/05/28 22:47
阅读 516
收藏 3

public static void append(List list){
 list.add("0042");
}
public static void main(String[] args)
{
 List<Integer> intList=new ArrayList<Integer>();
 append(intList);
 System.out.println(intList.get(0));
}

我问下,这个怎么会输出 0042.这个不是定义为Integer嘛,怎么能运行呢,不是该显示错误嘛。求解!

加载中
0
灯光下的宁静
灯光下的宁静
在你传入不带泛型的list的时候就会自动去掉泛型了。所以能把0042加进入list.
0
fneg
fneg

敢不敢将


public static void append(List list) {
		list.add("0042");
	}

替换成

public static void append(List<Integer> list) {
		list.add("0042");
	}
保证你编译都编译不过


情天大圣
情天大圣
哈哈,慢了2秒
0
情天大圣
情天大圣
public static void append(List<Integer> list)
skft
skft
手机上居然看不到<Integer>,结果看了半天也没看出来差别。。。@fneg
0
c1325791024
c1325791024

引用来自“成俊达”的答案

在你传入不带泛型的list的时候就会自动去掉泛型了。所以能把0042加进入list.
++
0
huan
huan
java 的擦除式 泛型,蛋疼。
huan
huan
回复 @qjm201000 : java的泛型实现方式,被认为是一种"伪”泛型。谷歌查一下就知道了。
q
qjm201000
擦除式泛型?该怎么理解这句话?
0
cokolin
cokolin
应该会在运行时报错吧?如果没有报错,那么就是泛型擦除了
返回顶部
顶部