で可能な重複を初期化対宣言の初期化:
Should I initialize variable within constructor or outside constructorコンストラクタ
を私はより良い練習と理由である、と思いまして。宣言時にクラスフィールドを初期化するか、コンストラクタでクラスフィールドを初期化する必要がありますか?それが単純な1行の初期化であるとすれば、
class Dude
{
String name = "El duderino";
Dude() {
// irrelevant code
}
}
対
class Dude
{
String name;
Dude() {
name = "El duderino";
// irrelevant code
}
}
編集:私はスタイルのいずれかが例外をスローする可能性がある初期化コードを実行する場合のように、他の上で好ましいであろう状況を認識してい。私がここで話しているのは、両方のスタイルが完全に同等である場合です。どちらの方法も同じタスクを達成します。どちらを使うべきですか?
これは妥当と聞こえます。しかし、私が話していたのは、どちらの方法でも同じように初期化されるフィールドです。つまり、コンストラクタから取得されたデータは使用されませんでした。サブ要素を格納する空の内部Listを初期化する。あなたはまだそれをコンストラクタで初期化しますか? – amrhassan
@amrhassan - その場合、宣言されたときに初期化する必要はありません。それを 'final'と宣言します。 – erickson
あなたの例で 'final'にする理由を見ることができますが、setter' setName(String name) 'があった場合はどうなりますか? – knownasilya