8

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

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

你认为哪个是正确答案?

4

3 回答 3

7

正确答案是您标记的那个ans。您将能够判断这mangoList是 a List,但您将无法获得其已擦除参数的类型。Remaning 的选择没有意义。

于 2012-07-16T00:13:46.007 回答
3

1.是的“通用类型在运行时被擦除”。

2.所以你将无法分辨列表的类型。

3.但是你会发现mangoList是一个List。

于 2012-07-16T03:08:11.067 回答
0

但是,您可以使用 mangoList instanceof List 来检查它是否是某种类型的 List。例如,如果您不确定您是否有 List 或 Mango 对象,但不会区分 List 的类型,这很有用。为此,我建议您检查第一个元素的类型。

于 2012-07-16T00:21:34.153 回答