init()
型のメソッドを宣言する目的はありますか?
私はコンストラクタよりも優先init()
すべきかどうか、または宣言を避ける方法をinit()
尋ねていません。
メソッドを宣言する背後に何らかの理由があるのかinit()
(それがどれほど一般的かを見て)、それがコードのにおいであり、避けるべきかどうかを尋ねています。
init()
イディオムは非常に一般的ですが、私は、任意の真のメリットを見ていません。
メソッドによる初期化を促進する型について話している:
class Demo {
public void init() {
//...
}
}
これはいつプロダクションコードで使用されますか?
コンストラクターがオブジェクトを完全に初期化せず、部分的に作成されたオブジェクトを生成することを示唆しているため、コードの匂いがするかもしれません。状態が設定されていない場合、オブジェクトは存在しないはずです。
これは、エンタープライズアプリケーションの意味で、生産をスピードアップするために使用されるある種の手法の一部である可能性があると信じさせてくれます。それは私がそのようなイディオムを持つことを考えることができる唯一の論理的な理由です。
init()
派生クラスでを呼び出しますか、またはその逆ですか?)その場合、ベースクラスに「ポストコンストラクターを実行させる例です。 」は、最も派生したクラスの構築が完了した後にのみ実行できます。これは、マルチフェーズ初期化の例です。