将classname传递给方法

时间:2014-01-09 21:22:14

标签: java instanceof

我的程序倾向于使用大量的包装异常(SwingWorker,例如,将所有异常包装在ExecutionException中)。所以,我正在尝试编写一个方法,允许我检查异常或其任何原因是否为instanceof异常类型,但我不知道如何(如果可能的话)通过只是一个类名作为方法的参数。

到目前为止,我有这个:

public static boolean errorOrCausesInstanceOfClass(Throwable e, Class c) {
    return e != null && (e.getClass().equals(c) || (e.getCause() != null && errorOrCausesInstanceOfClass(e.getCause(), c)));
}

但只有当e.getClass()完全等于c.getClass()时才会有效。但是我想检查使用instanceof来捕获子类。

有没有办法实现这个目标?

3 个答案:

答案 0 :(得分:7)

答案 1 :(得分:4)

查看Class.isAssignableFrom()

答案 2 :(得分:1)

请参阅方便的方法Class.isInstance()

    if( ... c.isInstance(e) ...