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是一个列表。太好了,是的,这就是我所猜测的。谢谢你的快速回答。你认为哪一个是正确的答案?为什么?