在java中强制转换泛型数组
该实现针对java中的链表:在java中强制转换泛型数组,java,arrays,generics,Java,Arrays,Generics,该实现针对java中的链表: public AnyType[] toArr() { AnyType[] arr = (AnyType[]) new Object[size]; int i = 0; Node<AnyType> current = head.next; while (cur != head){ arr[i] = current.data;// fill the array
public AnyType[] toArr() {
AnyType[] arr = (AnyType[]) new Object[size];
int i = 0;
Node<AnyType> current = head.next;
while (cur != head){
arr[i] = current.data;// fill the array
i++;
current = current.next;
}
return arr;
}
public static void main(String[] args) {
System.out.println(ll.toArr().toString());
}
谢谢。对象[]不是AnyType[]的子类型,因此强制转换是非法的
要创建特定类型的数组,可以使用reflective java.lang.reflect.array.newInstance工厂方法:
因此,如果您有AnyType类型的类实例:
但由于无法将其强制转换为对象[],因此还需要使用反射来修改它:
Array.set(myPrimitiveArray, 0, myPrimitiveWrapperObject);
对象[]不是AnyType[]的子类型,因此强制转换是非法的
要创建特定类型的数组,可以使用reflective java.lang.reflect.array.newInstance工厂方法:
因此,如果您有AnyType类型的类实例:
但由于无法将其强制转换为对象[],因此还需要使用反射来修改它:
Array.set(myPrimitiveArray, 0, myPrimitiveWrapperObject);
Object myPrimitiveArray = Array.newInstance(Integer.TYPE, length);
Array.set(myPrimitiveArray, 0, myPrimitiveWrapperObject);