【发布时间】:2012-03-08 17:53:29
【问题描述】:
我正在尝试做这样的事情
public void method(Object obj, Class objClass) {
if(obj instanceof objClass) {
//do something
}
}
我想传递 Class 对象或类名并测试它是否是以及它的 instanceof。 这不起作用,有人知道怎么做吗? 谢谢
【问题讨论】:
标签: java
我正在尝试做这样的事情
public void method(Object obj, Class objClass) {
if(obj instanceof objClass) {
//do something
}
}
我想传递 Class 对象或类名并测试它是否是以及它的 instanceof。 这不起作用,有人知道怎么做吗? 谢谢
【问题讨论】:
标签: java
可以使用Class的isInstance方法。
确定指定的对象是否与该类表示的对象分配兼容。 此方法是 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
}
}
【讨论】: