1

タイプortoString()のいくつかの個人的な例外のメソッドをオーバーライドしたいと思います。ExceptionRuntimeException

とサブクラスの両方のメソッドを表示testしたいとします。一度だけオーバーライドする必要があります。toString()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 に答える