为什么下面的代码片段不能编译?具有通用集合的instanceof
if (mangoList instanceof List<Mango>) { System.out.println("true"); }
- 你不知道mangoList是一个列表类型。
- instanceof关键字只适用于原始类型。
- 您只能使用反射来检查集合的类型。
- 通用类型在运行前擦除(ans)
- 该语句可能会导致mangoList被设置为List的实例。
你认为哪一个答案是正确的?
为什么下面的代码片段不能编译?具有通用集合的instanceof
if (mangoList instanceof List<Mango>) { System.out.println("true"); }
你认为哪一个答案是正确的?
正确答案是您标记为ans
的那个。您将能够知道mangoList
是List
,但是您将无法获得其擦除参数的类型。重新选择是没有道理的。
太棒了,是啊,这是我猜测..谢谢你的快速答案 – 2012-07-16 00:15:34
但是,您可以使用mangoList instanceof List来检查它是否是某种类型的List。例如,如果您不确定是否有List或Mango对象,这很有用,但不能区分不同类型的列表。为此,我建议您检查第一个元素的类型。
1.是“泛型类型在运行期间被擦除”。
2.所以你不能告诉列表的类型。
3.但是您将会认识到mangoList是一个List。
哪个_you_认为是正确答案?为什么? – Bernard 2012-07-16 00:44:01