Java - 无法从方法返回通用数组?

时间:2016-04-02 11:54:57

标签: java generics

在我的Java程序中,我有一个需要返回通用数组的方法。为了简化操作,我制作了一个更简单的代码来重现我的问题,如下所示:

public class Main {
    public static void main(String[] args) {
        Integer[] integers = toArray(1); 
        System.out.println(integers [0]); //should output 1
    }

    public static <T> T[] toArray(T element) {
        T[] array = (T[]) new Object[1];
        array[0] = element;
        return array;
    }
}

但是当我执行此代码时,我得到以下异常:

Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.Integer;
at Main.main(Main.java:3)

但是如果我将整数类型更改为Object [],它会按预期工作。我想这是因为Java只在编译时支持泛型,然后执行类型擦除,在这种情况下将我的Integer数组转换为Object数组。

但我的问题仍然存在,我的方法必须返回一个通用T值的集合,无论返回值是List还是数组都是一样的,所以如果不能用数组完成我想要的东西,我可以例如,使用ArrayList。

但是......是否可以通过使用数组来实现这一目标?

谢谢。

0 个答案:

没有答案