java - 使用 Java 的 OOP : avoiding to duplicate code

标签 java oop

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

假设我想为 ExceptionRuntimeException sub 显示带有 toString() 方法的 test -类。我只需要重写一次 toString()

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

示例:

public class SubClassOfException extends Exception {

    ...

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

}

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

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

最佳答案

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

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

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

并且在两个异常类中

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

关于java - 使用 Java 的 OOP : avoiding to duplicate code,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14268415/

相关文章:

java - 来自 adb install 的 INSTALL_PARSE_FAILED_NO_CERTIFICATES;使用Java 6、Android 5.0.2

java - 带命名参数查询的选择是否正确?

c++ - 是否可以将一个类的实例作为另一个类的数据成员?

c# - 为了清楚起见,从类继承是否可以接受?

javascript - 与 JavaScript 中的原型(prototype)/继承作斗争

java - 有符号整数类型的签名存储在哪里? ( java 语)

java - 如何使用 Spring 的 AnnotationMethodHandlerAdapter 实现发布后重定向表单?

oop - 让对象相互引用是不好的 OOP 实践吗?

c++ - 有哪些技巧可以使具有大量计算的函数变得干净?

java - 我如何制作一个列表,其中包含所有给定 xpath 的元素?