具有通配符泛型类型的 Java 集合:添加值
尝试向使用通配符泛型类型声明的 Java 集合添加值时,例如列表,编译器可能会引发错误。当添加的值的类型(例如,Parent p)与集合的预期类型不匹配时,就会发生这种情况。
出于安全原因存在此限制。考虑以下示例:
List<Child> childList = new ArrayList<Child>(); childList.add(new Child()); List<? extends Parent> parentList = childList; parentList.set(0, new Parent()); Child child = childList.get(0); // Unexpected type!
这里,我们定义一个 Child 对象列表,然后从中创建一个通配符通用列表parentList。我们可以安全地从parentList 中检索一个项目并将其转换为Parent。但是,尝试将父对象分配给列表是不允许的,因为它可能与列表元素的实际类型不兼容。
此限制可以防止潜在的运行时类型错误并确保父对象的完整性收集被维护。它允许使用通配符类型从未知集合中读取,同时防止可能损害集合预期行为的修改。
以上是为什么我不能向具有通配符泛型类型的 Java 集合添加值(列表的详细内容。更多信息请关注PHP中文网其他相关文章!