OOP与Java:避免重复代码

时间:2013-01-10 22:26:23

标签: java oop

我想覆盖toString()Exception类型的多个个人例外的RuntimeException方法。

假设我想为testtoString()子类显示Exception RuntimeException种方法。我必须一次覆盖toString()

我怎么能这样做,因为Java不支持多继承?我只是不想为这两种类型的异常编写2次toString()方法...

示例:

public class SubClassOfException extends Exception {

    ...

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

}

我的目标是创建SubClassOfRuntimeException并使toString()的自定义SubClassOfException方法受益,因为RuntimeExceptionException的子类。

有没有办法实现,或者我必须将toString()代码复制到SubClassOfExceptionSubClassOfRuntimeException

1 个答案:

答案 0 :(得分:4)

由于您的SubClassOfExceptionRuntimeException处于同一级别,因此您无法通过继承共享toString()方法。

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

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

和两个例外类

@Override
public String toString() {
    return ExceptionPrinter.exceptionToString(this);
}