Java 带有泛型集合的instanceof

Java 带有泛型集合的instanceof,java,Java,为什么下面的代码段不能编译 if (mangoList instanceof List<Mango>) { System.out.println("true"); } if(mangoList instanceof List){System.out.println(“true”);} 您不知道mangoList是一种列表类型 instanceof关键字仅适用于基本类型 只能使用反射检查集合的类型 泛型类型在运行前被擦除。(ans) 该语句可能导致将mangoList设置为Lis

为什么下面的代码段不能编译

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

你认为哪一个是正确答案?

正确答案就是你标记的
ans
。您将能够知道
mangoList
是一个
列表
,但无法获取其已擦除参数的类型。还押选择没有意义。

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

1。Yes“泛型类型在运行时被擦除”

2.因此您无法分辨列表的类型


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

太好了,是的,这就是我所猜测的。谢谢你的快速回答。你认为哪一个是正确的答案?为什么?