有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

面向对象Java:避免重复代码

我想重写一些类型为ExceptionRuntimeException的个人异常的toString()方法

假设我想为ExceptionRuntimeException子类显示testtoString()方法。我只需要重写toString()一次

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

例如:

public class SubClassOfException extends Exception {

    ...

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

}

我的目标是创建SubClassOfRuntimeException,并利用SubClassOfException的自定义toString()方法,因为RuntimeExceptionException的一个子类

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


共 (1) 个答案

  1. # 1 楼答案

    由于SubClassOfExceptionRuntimeException在同一级别上具有层次结构,因此不能通过继承共享toString()方法

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

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

    在这两个异常类中

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