Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中的强制转换方法_Java_Arrays_Casting - Fatal编程技术网

java中的强制转换方法

java中的强制转换方法,java,arrays,casting,Java,Arrays,Casting,我对toArray方法有问题。在本例中,我使用Integer并通过强制转换Integer来解决它,但该方法应适用于所有类型,而不在main中强制转换 为什么我不能在我的主要方法中使用这两种方法中的一种 arr = (T[]) a.toArray(arr) ; 甚至 arr = a.toArray(arr) 类型不匹配:无法从对象[]转换为整数[] size()和addFirst()都可以工作 publicstaticvoidmain(字符串[]args){ ArrayDeque a=新Ar

我对toArray方法有问题。在本例中,我使用Integer并通过强制转换Integer来解决它,但该方法应适用于所有类型,而不在main中强制转换

为什么我不能在我的主要方法中使用这两种方法中的一种

arr = (T[]) a.toArray(arr) ;
甚至

arr = a.toArray(arr) 
类型不匹配:无法从对象[]转换为整数[]

size()和addFirst()都可以工作

publicstaticvoidmain(字符串[]args){
ArrayDeque a=新ArrayDeque(5);
a、 第一(1);
a、 第一(2);
整数[]arr=新整数[a.size()];
arr=(整数[])a.toArray(arr);
System.out.println(Arrays.toString(arr));
}
公共类ArrayDeque实现了IDeque{
专用整数计数器=0;
私人E[]德克;
@抑制警告(“未选中”)
公共阵列样式(内部大小){
deque=(E[])新对象[大小];
}
公共E[]toArray(E[]a){
return(E[])array.copyOf(deque,counter,a.getClass());
}
}

您正在实例化一个原始类型:

ArrayDeque a = new ArrayDeque(5);
换成

ArrayDeque<Integer> a = new ArrayDeque<>(5);
ArrayDeque a=新的ArrayDeque(5);
这样就不需要将返回的数组强制转换为
Integer[]


另外,
toArray(E[]a)
定义自己的泛型类型参数
E
是没有意义的。它应该使用在类级别定义的参数。

在声明ArrayQue a时,您正在实例化一个原始类型。您应该将其参数化:

ArrayDeque<Integer> a = new ArrayDeque<Integer>(5);
a.addFirst(1);
a.addFirst(2);

Integer [] arr = new Integer[a.size()];
arr=  a.toArray(arr);
ArrayDeque a=新的ArrayDeque(5);
a、 第一(1);
a、 第一(2);
整数[]arr=新整数[a.size()];
arr=a.toArray(arr);

注意
toArray
隐藏了一个类类型参数
E
您正在回答一个(很明显?)dup;-)
ArrayDeque<Integer> a = new ArrayDeque<Integer>(5);
a.addFirst(1);
a.addFirst(2);

Integer [] arr = new Integer[a.size()];
arr=  a.toArray(arr);