class Foo(){
String name;
public Foo(String name){
//code to be inserted
}
public void setName(String name){
this.name = name;
}
}
欠落している行に挿入するほうがよいものとその理由:
1.)this.name = name;
2.)setName(name);
class Foo(){
String name;
public Foo(String name){
//code to be inserted
}
public void setName(String name){
this.name = name;
}
}
欠落している行に挿入するほうがよいものとその理由:
1.)this.name = name;
2.)setName(name);
それはあなた次第です。
たとえば、コンストラクターに渡された属性をname
変数に格納する前に検証を実行する場合は、セッターを呼び出します。
ただし、この種の検証を回避したい場合、またはセッターが例外をスローする可能性がある場合は、変数を直接割り当ててください。
ここで最も重要なのは、コンストラクターメソッドの最後に一貫性のあるインスタンスを作成したことです。
setName(name);
セッターにチェックインを追加した場合に備えて、そうでない場合はセッターを回避できます。
例えば
public void setWeight(int weight){
if(weight<=0)
this.weight = 50; // set some default/average weight
else
this.weight = weight;
}
一般的に、セッターコールの方が安全です。セッターには追加のロジックがある場合があります。
class Foo(){
String name;
public Foo(String name){
this.name = name;
}
}
呼べる名前を設定しながらFoo(name)
私の意見では、セッターメソッドで値を渡し、そのクラスのオブジェクトを作成する上でより重要な値を渡し、それらをコンストラクターで渡すのが最善の方法です。
コンストラクターですべての値を渡そうとすると、クラスが大きくなるにつれて、パラメーターが多すぎてオブジェクトを作成できなくなります。
たとえば、クラス Foo がプロパティ int id に依存していて、この id に基づいてコンストラクターで常にいくつかのロジックを実行する必要があると仮定します。したがって、この ID を渡すコンストラクターを作成します。その後、setter メソッドを使用して、そのオブジェクトのプロパティに値を追加します。
Foo(int id){
}