0

複数のコンストラクターでクラスを拡張します。サブクラスに最後のフィールドを追加します。もちろん、これは自分のコンストラクターで初期化する必要があります。

問題は、スーパークラスのコンストラクターの(ほとんど)を再実装したくないので、次のようなことをしたいと思います。

public myConstructor(Object... params){
    super(params);
    try{
        this.finalField = "backup value";
    }
    catch(someException e){

    }
}

これは何らかの方法で可能ですか?

編集:スーパークラスコンストラクターが自分のコンストラクターを呼び出すことは決してないので、このシナリオは決して起こらないことに気づきました。

4

2 に答える 2

2

オブジェクトの初期化のプロセスを簡素化するために、通常、次のソリューションを使用します。

  • コンストラクターの代わりにオブジェクトを作成し(必要に応じて例外をスローし)、再利用可能なプライベートメソッドで共通の初期化機能を提供する静的ファクトリメソッドを作成できます。
  • また、複数のコンストラクターの代わりにBuilderパターンを使用することもできます。http://en.wikipedia.org/wiki/Builder_pattern
于 2012-06-19T08:24:44.113 に答える
1

すべてのコンストラクターに、最終フィールドを設定する1つのコンストラクターを呼び出させます。

于 2012-06-19T08:25:00.893 に答える