相关疑难解决方法(0)

将通用列表转换为数组

我已经搜索过这个,但遗憾的是,我没有得到正确答案.

class Helper {
    public static <T> T[] toArray(List<T> list) {
        T[] array = (T[]) new Object[list.size()];
        for (int i = 0; i < list.size(); i++) {
            array[i] = list.get(i);
        }
        return array;
    }
}
Run Code Online (Sandbox Code Playgroud)

测试一下:

public static void main(String[] args) {
    List<String> list = new ArrayList<String>();
    list.add("abc");
    String[] array = toArray(list);
    System.out.println(array);
}
Run Code Online (Sandbox Code Playgroud)

但是抛出了一个错误:

Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.String;
at test.Helper.main(Helper.java:30)
Run Code Online (Sandbox Code Playgroud)

怎么解决这个?


UPDATE

我想要这种方法,因为有时候,我的代码中的类型太长了:

newEntries.toArray(new IClasspathEntry[0])
Run Code Online (Sandbox Code Playgroud)

我希望打电话给:

toArray(newEntries)
Run Code Online (Sandbox Code Playgroud)

最后

创建这样的方法似乎是不可能的,非常感谢你们!

java generics

62
推荐指数
7
解决办法
8万
查看次数

标签 统计

generics ×1

java ×1