带有泛型集合的instanceof

时间:2012-07-16 00:07:39

标签: java

为什么以下代码段无法编译?

if (mangoList instanceof List<Mango>) { System.out.println("true"); }
  • 您不知道mangoList是List类型。
  • instanceof关键字仅适用于基本类型。
  • 您只能使用反射检查集合的类型。
  • 通用类型在运行时被删除。(ans)
  • 该语句可能导致mangoList被设置为List的实例。

您认为哪个是正确答案?

3 个答案:

答案 0 :(得分:7)

正确答案是您标记为ans的答案。您将能够告诉mangoListList,但您无法获得其已删除参数的类型。重新选择没有意义。

答案 1 :(得分:3)

1。是“在运行时删除通用类型”。

2。所以你不能告诉列表的类型。

3. 但是你可以认识到mangoList是一个List。

答案 2 :(得分:0)

但是,您可以使用mangoList instanceof List来检查它是否是具有某种类型的List。例如,如果您不确定是否有List或Mango对象,但是不区分列表类型,则此选项非常有用。为此,我建议你检查第一个元素的类型。