gpt4 book ai didi

java - 泛型并在 Java 中转换

转载 作者:行者123 更新时间:2023-11-29 05:55:43 24 4
gpt4 key购买 nike

假设我有以下代码

E[] arrayVar = (E[])new Object[1];// It causes a compiler warning 

问题是,在什么情况下代码会导致运行时错误,

最佳答案

如果您尝试将结果分配给具体化的 E 类型,该代码只会导致运行时错误:

createArray(); // no exception
String[] arr = createArray(); // causes ClassCastException

public static <E> E[] createArray() {
return (E[]) new Object[1];
}

创建通用数组的安全方法是使用 Array.newInstance :

public static <E> E[] createArray(Class<E> component) {
return (E[]) Array.newInstance(component, 1);
}

此方法不会导致 ClassCastException

关于java - 泛型并在 Java 中转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12207734/

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