0

だから私は答えを見つけることができないように見える簡単なプログラミングの質問があります。Googleからいくつかのコードを閲覧しているときに、コード内の多くのメソッドの前に「this」が配置されていることに気付きました。これを行う目的は何ですか?使用しないよりもメリットはありますか?

例:

this.doMethod();

に比べ:

doMethod();

簡単な答えだと思います。読んだすべてのコードを理解できるのが好きです。

4

3 に答える 3

5

いいえ、メソッド呼び出しにはまったく違いはありません。読みやすい方を使用してください。

インスタンス変数とパラメーター(または他のローカル変数)を明確にするときに違いが生じることに注意してください。例えば:

public void setFoo(int foo) {
    this.foo = foo;
}

これは、インスタンス変数にパラメーターからの値を割り当てることです。使用foo = foo;するだけでは何も起こりません。

于 2012-12-23T15:15:43.780 に答える
3

それらの間にまったく違いはありません。常に何らかの参照でメソッドを呼び出します。参照を使用しない場合、this参照は暗黙的です。

だから、doMethod()と同じthis.doMethod()です。を使用thisすることで、それを明示的にするだけです。

参照を明示的に使用する必要がある場所の1つthisは、メソッド/コンストラクターパラメーターの値をインスタンス変数に割り当てる場所であり、次の例のように、両方とも同じ名前です。

public Demo(int var) {  // Constructor
    this.var = var;
}

したがって、上記の例では、はインスタンス変数を参照し、コンストラクターパラメーターを参照するthis.varとは異なります。var

于 2012-12-23T15:15:24.093 に答える
3

this現在のクラスのオブジェクトインスタンスを表します。プログラミングの練習では、ほとんどの場合、あいまいさを解消するために使用されます。たとえば、たとえば、という名前のクラス変数とという名前nameのメソッドパラメータがnamedあるため、これは2つを区別するために使用されます。

     public void setName(String name){
         this.name= name;
     }

あいまいさがなければ、大きな違いはありません。つまりsetName("John");this.setName("John");同じことです。しかし、それでも1つの違いがあります。this.setName("John");オブジェクトでメソッドを呼び出すのと同じパターンに従います(例emp.setName("A");)。ここでthisは、正常なクラスオブジェクトを表しています。

于 2012-12-23T15:16:04.987 に答える