为什么以下代码段无法编译?
if (mangoList instanceof List<Mango>) { System.out.println("true"); }
- 你不知道 mangoList 是 List 类型。
- instanceof 关键字仅适用于原始类型。
- 您只能使用反射检查集合的类型。
- 泛型类型在运行前被擦除。(ans)
- 该语句可能会导致将 mangoList 设置为 List 的实例。
你认为哪个是正确答案?
为什么以下代码段无法编译?
if (mangoList instanceof List<Mango>) { System.out.println("true"); }
你认为哪个是正确答案?
正确答案是您标记的那个ans
。您将能够判断这mangoList
是 a List
,但您将无法获得其已擦除参数的类型。Remaning 的选择没有意义。
1.是的“通用类型在运行时被擦除”。
2.所以你将无法分辨列表的类型。
3.但是你会发现mangoList是一个List。
但是,您可以使用 mangoList instanceof List 来检查它是否是某种类型的 List。例如,如果您不确定您是否有 List 或 Mango 对象,但不会区分 List 的类型,这很有用。为此,我建议您检查第一个元素的类型。