我试着做这样的事情
public void method(Object obj, Class objClass) {
if(obj instanceof objClass) {
//do something
}
}
我想传递Class对象或类名,并测试它是否和它的instanceof。 这不行,有谁知道怎么做? 感谢
答案 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
}
}