在我的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。
但是......是否可以通过使用数组来实现这一目标?
谢谢。