【发布时间】:2014-01-23 07:22:13
【问题描述】:
我想知道为什么这种转换不起作用:
ArrayList<Song> arrayList =new ArrayList<MediaItem>();
我可能需要补充一点,即 Song 扩展了 MediaItem。 我认为这种转换应该有效,因为 Song 能够存储 MediaItem 中的所有信息。所以不会丢失任何信息。 有人给我解释一下吗?
【问题讨论】:
-
什么转换?您只是将对一种对象类型的引用分配给不同的对象类型。即使允许,也不会“转换”任何内容。
-
我对相关问题的回答 here 解释了这一点。
-
你可以使用逆变实现一个安全的版本;在这个问题中探讨了一个例子; Returning a Collection<ChildType> from a method that specifies that it returns Collection<ParentType>
标签: java generics arraylist casting covariance