java - 为什么不能创建参数化类型的数组?
问题描述
我试过像这样创建一个整数列表数组
List<Integer>[] arrayOfLists = new List<Integer>[2];
但注意到它会引发错误“ generic array creation
”。然后我像这样尝试
List<Integer>[] arrayOfLists = new List<>[2];
引发错误“ cannot create array with '<>'
”。
另一方面,如果我完全删除右侧的类型规范,它会起作用:
List<Integer>[] arrayOfLists = new List[2];
所以现在我的问题是:为什么?为什么我不能指定类型?是什么导致了这种限制?
我在 Java 文档https://docs.oracle.com/javase/tutorial/java/generics/restrictions.html#createArrays中偶然发现了这一点,原因是在特定情况下“应该抛出 ArrayStoreException,但是运行时无法检测到它。” 这反过来又提出了一个问题:为什么运行时无法检测到它?
解决方案
推荐阅读
- javascript - 使用 JSX 时如何让 Tree Shaking 在 Vuetify 中工作?
- optaplanner - optaplanner 使用动态配置的时间提供的最佳解决方案
- java - HttpClients.createSystem() 与 HttpClients.createDefault() 之间的区别?
- tinymce - TinyMCE 仅允许来自白名单域的图像或仅允许上传
- python - RobertaForSequenceClassification 中的 logits 和概率代表什么?
- python - 密码重置视图显示 django 框架模板
- ruby-on-rails - 更改自定义配置文件时运行自定义代码块,类似于 Rails I18n 重新加载的工作原理?
- java - 整数数组的 Java 流以返回对象列表
- c - C 共享对象库生成文件
- php - Sheets API v4 - 给定电子表格,创建具有自定义标题的工作表