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

Mus*_*afa 2 java

我试着这样做

public void method(Object obj, Class objClass) {
    if(obj instanceof objClass) {
        //do something
    }
}
Run Code Online (Sandbox Code Playgroud)

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

Mik*_*uel 6

你可以使用的isInstance方法Class.

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

所以你会写

if (objClass.isInstance(obj)) ...
Run Code Online (Sandbox Code Playgroud)

如果要一般性地执行此操作,可以使用.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
  }
}
Run Code Online (Sandbox Code Playgroud)