案例如下:


	public static void main(String[] args) {
		List<String> list =new ArrayList<String>(3);
		list.add ("aa");
		list.add ("bb");
		list.add ("cc");
		String[] array1 = new String[2];
		list.toArray(array1) ;
		String[] array2 = new String[3];
		list.toArray(array2) ;
		String[] array3 = new String[4];
		list.toArray(array3) ;
		System.out.println (Arrays.asList (array1));
		System.out.println (Arrays.asList (array2));
		System.out.println (Arrays.asList (array3));


		
	}

运行结果如下:

发觉array1转出来的是两个null,array2,array3可以正常转

看了下Arrays.asList源码发现

集合的length如果小于数组size,则重新分配一个空间,复制完成后返回一个新的数组引用,与原来的a无关,length如果大于等于数组size,则集合中的数据复制进入数组即可,返回a,因此array1转化失败,array2,array3可以正常转

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐