我试着这样做
public void method(Object obj, Class objClass) {
if(obj instanceof objClass) {
//do something
}
}
Run Code Online (Sandbox Code Playgroud)
我想传递Class对象或类名,并测试是否和它的instanceof.这不行,有谁知道怎么做?谢谢
你可以使用的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)
| 归档时间: |
|
| 查看次数: |
324 次 |
| 最近记录: |