我有一个方法(不幸的是)接受一个Object实例作为它的唯一参数。Object如果是任何类型Throwable(这意味着所有 Exceptions- 选中或未选中,以及所有 Errors) ,我需要添加以不同方式处理它的逻辑。
public void handle(Object toHandle) {
if(toHandle.getClass().isAssignableFrom(Throwable.class))
handleThrowable(toHandle);
}
当我像这样调用这个方法时:
RuntimeException rte = new RuntimeExceptio("Panic!");
handle(rte);
isAssignableFrom检查返回 false 并且永远handleThrowable不会被调用。为什么?
相反,我必须使用:
public void handle(Object toHandle) {
if(toHanlde instanceof Throwable)
handleThrowable(toHandle);
}
正如我所期望的那样,这很有效。但仍然为为什么isAssignableFrom不工作而感到困惑......在此先感谢!