gpt4 book ai didi

java - 将通用列表转换为数组

转载 作者:IT老高 更新时间:2023-10-28 20:21:07 26 4
gpt4 key购买 nike

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

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;
}
}

测试一下:

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

但是抛出了一个错误:

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

如何解决?


更新

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

newEntries.toArray(new IClasspathEntry[0])

我希望调用:

toArray(newEntries)

终于

好像不可能创建这样的方法,非常感谢大家!

最佳答案

这是由于类型删除造成的。泛型在编译中被删除,因此 Helper.toArray 将被编译成返回一个 Object[]

对于这种特殊情况,我建议您使用 List.toArray(T[]) .

String[] array = list.toArray(new String[list.size()]);

关于java - 将通用列表转换为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6522284/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com