だから私は答えを見つけることができないように見える簡単なプログラミングの質問があります。Googleからいくつかのコードを閲覧しているときに、コード内の多くのメソッドの前に「this」が配置されていることに気付きました。これを行う目的は何ですか?使用しないよりもメリットはありますか?
例:
this.doMethod();
に比べ:
doMethod();
簡単な答えだと思います。読んだすべてのコードを理解できるのが好きです。
いいえ、メソッド呼び出しにはまったく違いはありません。読みやすい方を使用してください。
インスタンス変数とパラメーター(または他のローカル変数)を明確にするときに違いが生じることに注意してください。例えば:
public void setFoo(int foo) {
this.foo = foo;
}
これは、インスタンス変数にパラメーターからの値を割り当てることです。使用foo = foo;
するだけでは何も起こりません。
それらの間にまったく違いはありません。常に何らかの参照でメソッドを呼び出します。参照を使用しない場合、this
参照は暗黙的です。
だから、doMethod()
と同じthis.doMethod()
です。を使用this
することで、それを明示的にするだけです。
参照を明示的に使用する必要がある場所の1つthis
は、メソッド/コンストラクターパラメーターの値をインスタンス変数に割り当てる場所であり、次の例のように、両方とも同じ名前です。
public Demo(int var) { // Constructor
this.var = var;
}
したがって、上記の例では、はインスタンス変数を参照し、コンストラクターパラメーターを参照するthis.var
とは異なります。var
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
は、正常なクラスオブジェクトを表しています。