【发布时间】:2013-02-18 11:37:55
【问题描述】:
List<Object> list = new ArrayList<String>()
当我使用上面的行编译器给我类型不匹配错误。但据我了解,对象是字符串的超类,如果我创建对象列表,那么它也应该接受字符串。那么为什么上面的说法是错误的。我正在寻找解释。
【问题讨论】:
-
没有。泛型中的类型不能那样工作。你可以用
List<? extends Object> list = new ArrayList<String>();来做,但它不可用(可以get()但不能add())。 -
这篇文章似乎解释得很好...stackoverflow.com/a/12973616/828193
-
还要确保 list 和 arraylist 都来自同一个包...即确保它们都来自 java.util,否则会出现错误
标签: java collections arraylist java-6