(对象instanceof C)C的类型是什么?

时间:2012-03-08 17:53:30

标签: java

我试着做这样的事情

public void method(Object obj, Class objClass) {
    if(obj instanceof objClass) {
        //do something
    }
}

我想传递Class对象或类名,并测试它是否和它的instanceof。 这不行,有谁知道怎么做? 感谢

1 个答案:

答案 0 :(得分:6)

您可以使用Class的{​​{3}}方法。

  

确定指定的Object是否与此Class表示的对象分配兼容。 此方法是Java语言instanceof运算符的动态等效项。如果指定的Object参数为非null,则该方法返回true,并且可以强制转换为此Class对象表示的引用类型,而不会引发ClassCastException。否则返回false。

所以你会写

if (objClass.isInstance(obj)) ...

如果您想要一般性地执行此操作,可以使用.cast转换为objClass所代表的类型。

public <T> void method(Object obj, Class<T> objClass) {
  if(objClass.isInstance(obj)) {
    T t = objClass.cast(obj);
    //do something with t instead of obj
  }
}