Java toArray()

2019-09-16  本文已影响0人  PC_Repair

使用 Java toArray 遇到的问题

    public static void main(String[] args) {
        List<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        //list.toArray() 返回的是一个 Object[] 类型的数组
        Integer[] arr = (Integer[]) list.toArray();
    }
//Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.Integer;

Java toArray 有两个方法。

不带参数的 toArray

    public Object[] toArray() {
        Object[] result = new Object[size];
        System.arraycopy(elementData, 0, result, 0, size);
        return result;
    }

带参数的 toArray

    @SuppressWarnings("unchecked")
    public <T> T[] toArray(T[] a) {
        if (a.length < size)
            // Make a new array of a's runtime type, but my contents:
            return (T[]) Arrays.copyOf(elementData, size, a.getClass());
        System.arraycopy(elementData, 0, a, 0, size);
        if (a.length > size)
            a[size] = null;
        return a;
    }

解决方法

//1
Integer[] arr = new Integer[<total size>];
list.toArray(arr);

//2
Integer[] arr = (Integer[]) list.toArray(new Integer[0]);

//3
Integer[] a = new Integer[<total size>];
Integer[] arr = list.toArray(a);
上一篇下一篇

猜你喜欢

热点阅读