2
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);

4

5 に答える 5

6

それはあなた次第です。

たとえば、コンストラクターに渡された属性をname変数に格納する前に検証を実行する場合は、セッターを呼び出します。

ただし、この種の検証を回避したい場合、またはセッターが例外をスローする可能性がある場合は、変数を直接割り当ててください。

ここで最も重要なのは、コンストラクターメソッドの最後に一貫性のあるインスタンスを作成したことです。

于 2013-03-11T11:06:58.513 に答える
2
setName(name); 

セッターにチェックインを追加した場合に備えて、そうでない場合はセッターを回避できます。

例えば

public void setWeight(int weight){
  if(weight<=0)
    this.weight = 50;  // set some default/average weight
  else
    this.weight = weight;
}
于 2013-03-11T11:06:51.180 に答える
1

一般的に、セッターコールの方が安全です。セッターには追加のロジックがある場合があります。

  1. データ検証
  2. 状態の更新:たとえば、コレクションの容量を設定すると、データをより大きなコンテナーにコピーすることを意味する場合があります。
  3. クラスの不変条件を維持するための状態の更新:1つのフィールドを設定すると、それらの一貫性を保つために別のフィールドを変更する必要がある場合があります。
于 2013-03-11T11:12:35.393 に答える
0
class Foo(){

   String name;

   public Foo(String name){
      this.name = name;    
   }

}

呼べる名前を設定しながらFoo(name)

于 2013-03-11T11:05:48.153 に答える
0

私の意見では、セッターメソッドで値を渡し、そのクラスのオブジェクトを作成する上でより重要な値を渡し、それらをコンストラクターで渡すのが最善の方法です。

コンストラクターですべての値を渡そうとすると、クラスが大きくなるにつれて、パラメーターが多すぎてオブジェクトを作成できなくなります。

たとえば、クラス Foo がプロパティ int id に依存していて、この id に基づいてコンストラクターで常にいくつかのロジックを実行する必要があると仮定します。したがって、この ID を渡すコンストラクターを作成します。その後、setter メソッドを使用して、そのオブジェクトのプロパティに値を追加します。

  Foo(int id){

  }
于 2013-03-11T11:11:30.770 に答える