java - 检查一个对象是否是给定类名列表的实例

标签 java generics instanceof type-erasure

给定一个 Object o和一个 String className = "org.foo.Foo" ,我想检查是否 oList<className> 的实例

我试过这个但不会编译:

Class<?> cls = Class.forName(className);
if (o instanceof List<cls>){ // this gives error: cls cannot be resolved to a type
  doSomething();
}

请注意我的输入是 Object oString className (请注意类型)。

最佳答案

是因为Type Erasure .声明

if (o instanceof List<cls>) {
  doSomething();
}

将在运行时执行,届时列表的泛型类型将被删除。因此,没有必要检查 instanceof 通用类型。

关于java - 检查一个对象是否是给定类名列表的实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25003711/

相关文章:

c# - 将泛型列表传递给 C# 中的多参数方法

design-patterns - 如果在对象类型上,寻找一种设计模式来替换 huuuge

Java 继承和避免经常使用 instanceof

java - 使用 gridbaglayout 按下按钮时无法添加 JLabels

ios - 如何在 func 中将类类型定义为参数?

java - 使用这样的 Jbutton 设置单击 "Next"按钮后,我将如何执行操作?

java - 避免instanceof - 不可修改的类

javascript - 即使 b 在 a 的原型(prototype)链中,a instanceof b也会返回 false

java - 使用 Checkstyle/PMD/Findbugs 检查变量值

java - 为什么 Class.newInstance 总是抛出异常?