Java-Collections.copy(dst, src)有坑

先看下面的一段代码看看输出结果是什么:

public static void main(String[] args) {
		List src = new ArrayList();
		for(int i=0;i<5;i++){
			src.add(""+i);
		}
		List dst = new ArrayList(src.size());
		Collections.copy(dst, src);
		System.out.println(dst);
	}

希望是把src复制一份出来,结果竟然跑出来一个异常:

Java-Collections.copy(dst, src)有坑_第1张图片

看看源码:

Java-Collections.copy(dst, src)有坑_第2张图片

如果src的长度比dest的长度大的话,就抛异常!

WTF!

所以正确的使用方式是:

	public static void main(String[] args) {
		List src = new ArrayList();
		for(int i=0;i<5;i++){
			src.add(""+i);
		}
		//List dst = new ArrayList(src.size());
		List dst = Arrays.asList(new String[src.size()]);
		Collections.copy(dst, src);
		System.out.println(dst);
	}

好大的坑啊!

你可能感兴趣的:(java)