1

我想覆盖toString()几个类型为Exceptionor的个人异常的方法RuntimeException

假设我想同时显示子类和子类testtoString()方法。我只需要覆盖一次。ExceptionRuntimeExceptiontoString()

由于Java不支持多继承,我该怎么做?我只是不想toString()为这两种异常编写 2 次方法...

例子 :

public class SubClassOfException extends Exception {

    ...

   @Override
   public String toString() {   
      return "test";
   }

}

我的目标是创建自定义方法SubClassOfRuntimeException并从中受益,因为它是.toString()SubClassOfExceptionRuntimeExceptionException

有没有办法做到这一点,或者我必须将toString()代码复制到SubClassOfExceptionand中SubClassOfRuntimeException

4

1 回答 1

4

由于您SubClassOfException的层次结构与 相同,因此您不能通过继承RuntimeException共享该方法。toString()

toString()但是,如果您的具体异常类型中的两种方法都将实际的字符串构建委托给一个通用的“异常字符串构建器” ,那么您也不需要复制代码。我的意思是

class ExceptionPrinter {
    public static String exceptionToString(Exception e) { ... }
}

并且在两个异常类中

@Override
public String toString() {
    return ExceptionPrinter.exceptionToString(this);
}
于 2013-01-10T22:40:01.090 回答