java - 比较时出现“Illegal generic type for instanceof”错误
问题描述
在我的代码中有 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) {
}
}
}
推荐阅读
- python - 将高斯消元的结果与 numpy.linalg.solve 的输出进行比较
- python - 使用 selenium 自动填写日期
- javascript - 带有选择和输入的 jQuery/Javascript 表格过滤器
- centos7 - virtnetwork服务启动后如何添加静态路由
- c# - 如何在启动脚本 2 之前等待脚本 1 中的函数完成?
- google-sheets - 从另一个工作表导入列并加入
- c++ - 如何包含不带引号的头文件?
- google-assistant-sdk - 是否可以让谷歌助手在手机上启动邮件客户端
- c# - 使用变量从 c# 发送 tsql 值
- elf - 使用 elftoolchain 编辑文件