我想覆盖 toString()
方法的几个个人异常,类型为 Exception
或 RuntimeException
。
假设我想为 Exception
和 RuntimeException
sub 显示带有 toString()
方法的 test
-类。我只需要重写一次 toString()
。
Java 不支持多继承,我该怎么做?我只是不想为两种类型的异常编写 2 次 toString()
方法...
示例:
public class SubClassOfException extends Exception {
...
@Override
public String toString() {
return "test";
}
}
我的目标是创建 SubClassOfRuntimeException
并利用 SubClassOfException
的自定义 toString()
方法,因为 RuntimeException
是 Exception
的子类。
有没有办法做到这一点,或者我必须将 toString()
代码复制到 SubClassOfException
和 SubClassOfRuntimeException
中?
最佳答案
由于您的 SubClassOfException
与 RuntimeException
处于同一级别,因此您无法通过继承共享 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/