在我的代码中有3个自定义类
CheckinTemplate
Employee
Status
Run Code Online (Sandbox Code Playgroud)
虽然有一个场景出现了Object o,但可能是上面列出的任何一个列表.我想比较如下并做某些逻辑,但错误来自"非法泛型类型的例子"
if (o instanceof List<CheckinTemplate>) {
} else if (o instanceof List<Employee>) {
} else if (o instanceof List<Status>) {
}
Run Code Online (Sandbox Code Playgroud)
这是无法完成的,因为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) {
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
387 次 |
| 最近记录: |