作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我有以下代码
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/
我是一名优秀的程序员,十分优秀!