我正在编写一个方法,可以使用3个不同对象的不同列表,每个对象都扩展相同的超类。方法签名如下所示:
private void writeObjectToCsv(File file, List<? extends ZohoData> rawDataView)
我需要知道哪个列表已作为参数传递,所以我想像这样使用instanceof检查:
if (rawDataView instanceof List<ZohoChatData>)
然而,这给了我一个错误,表示&#39;非法泛型类型(例如,ZohoChatData在IDE中标记为红色)。 ZohoChatdata扩展了ZohoData,所以我不明白为什么编译器会给我这个错误。有谁知道吗?
谢谢。
答案 0 :(得分:0)
我过去曾遇到过这个问题,并找到了两种可能的解决方法:
此外,您可以将类型检查移动到完全处理/使用项目的部分。这也将消除这个问题。
此致
了Sem
答案 1 :(得分:0)
泛型仅在编译时使用,编译后类型将被删除,并且在运行时将不再存在。 instanceof用于检查对象的类型。所以你不能在像List这样的Generic类中使用instanceof。要确定列表包含哪种类型的对象,gem所解释的方式就足够了。