gpt4 book ai didi

java - 比较时得到 “Illegal generic type for instanceof”错误

转载 作者:行者123 更新时间:2023-11-29 07:25:43 25 4
gpt4 key购买 nike

在我的代码中有 3 个自定义类

CheckinTemplate
Employee
Status

虽然有一种情况出现,Object o 可能是上述类列表中的任何一个。我想如下进行比较并执行某些逻辑,但出现错误“instanceof 的非法泛型”

if (o instanceof List<CheckinTemplate>) {

} else if (o instanceof List<Employee>) {

} else if (o instanceof List<Status>) {

}

最佳答案

这是不可能的,因为instanceof在运行时计算,但泛型类型参数在编译期间被删除。这意味着在运行时 List<CheckinTemplate> 之间没有区别和 List<Employee> .

您可以检查是否o instanceof List (或者 o instanceof List<?> 如果你想避免使用原始 List 类型)。如果是,您可以将其转换为 List (或 List<?> )然后运行 ​​instanceof在其元素上确定它们的类型。

if (o instanceof List) {
List list = (List) o;
for (Object e : list) {
if (e instanceof CheckinTemplate) {

} else if (e instanceof Employee) {

} else if (e instanceof Status) {

}
}
}

关于java - 比较时得到 “Illegal generic type for instanceof”错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53370073/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com