Java集合转数组时的细节问题

自定义集合类时,在重写toArray方法

public <T> T[] toArray(T[] a) {

//		 if (a.length < size)
//			    //通过Arrays.copyOf()方法进行拷贝, 长度为size
//			 return (T[]) Arrays.copyOf(dataArray, size, a.getClass());
//	        System.arraycopy(dataArray, 0, a, 0, size);
//		    //如果传入的数组的长度大于list中的元素个数, 将a[size]赋值为null
//		    if (a.length > size) {
//		        a[size] = null;
//		    }
//		    return a;
				for (int i = 0; i < a.length; i++) {
					a[i] = (T)dataArray[i];
				}

测试发现报错了
请添加图片描述

原因在于泛型只能包容的是对象类型,而基本类型在java里不属于对象类型。请添加图片描述

YockList<Integer> yockList = new YockList<>();
		
		// 测试String类型
//		yockList.add("i");
//		yockList.add("am");
//		yockList.add("Zilatan");
//		yockList.add("!");
		
		// 测试integer类型
		yockList.add(123);
		yockList.add(412323);
		yockList.add(12345);
		yockList.add(123512323);
		
 
		Integer[] strArr = yockList.toArray(new Integer[yockList.size()]); 
		for (Object str : strArr) {
			System.out.println(str);
		}

问题就解决了!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Micek

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值