3

現在のクラスのインスタンス変数を参照するための次の「this」の使用法は受け入れられますか?PHPではこれを行う必要がありますが、Javaでは変数を名前で直接呼び出すことができることに気付きました。

私は個人的に「this.variable」の方が理解しやすいと思いますが、それが正常でない場合は、悪いコーディング習慣を身に付けたくありません。

ありがとう!

public class MyClass {  

    /**
     * Private variable
     */
    private int myInt;

    /**
     * Setter method
     */
    public void setMyInt(int value) {
        this.myInt = value;
    }   
}
4

5 に答える 5

7

人々が言っ​​ているように、それは必須ではありませんが、それは許容できます。

そうは言っても、次のようなことをしている場合は必要です。

private int value;

public void setValue(int value) {
     this.value = value;
}

これは、クラス変数と同じ名前のパラメーターを区別します。私が作成するほとんどすべてのセッターでこのパターンを使用していることに気付き、「this」キーワードを使用するのはこのときだけです。

于 2010-11-02T05:55:57.677 に答える
1

これはJavaで完全に受け入れられる方法ですが、必須ではありません(あなたが言ったように)。

于 2010-11-02T05:48:21.807 に答える
1

私はあなたのコードをこのように書きます:

public class MyClass {

  private int myInt;

  public void setMyInt(int myInt) {
    this.myInt = myInt;
  }
}

あなたとの違いは、(役に立たないJavadocを削除したことを除けば)私のコードでは、パラメーターがメンバー変数と同じ名前を持っていることです。他のユーザーは、メンバー変数にパラメーターとは異なる名前を付けることを好みますが、視覚的なバランスのために、必要に応じてメンバー変数の前にプレフィックスを付けることを好みます。this.この標準を使用したJavaコーディングの10年以上の間、間違った変数を使用することによって引き起こされるバグは発生しませんでした。

于 2010-11-02T05:51:29.817 に答える
0

コードベース全体で一貫性を保つために、使用するかしないかを指定してください。ただし、変数が(引数またはローカルメソッド変数によって)マスクされている場合は、これを使用する必要があります

于 2010-11-02T05:49:20.990 に答える
0

あなたの職場やプロジェクトにこの方法での使用が特に禁止されているスタイルガイドがない限り、thisあなたがしていることはまったく問題ないと思います。個人的thisには、厳密に必要な場合(たとえば、同じ名前のメソッドパラメーターを使用してインスタンス変数を初期化する場合)にのみ使用しますが、thisメンバーを参照するために常に使用するコードをたくさん見てきました。それはもっと読みやすいかもしれません、そしてそれは確かにそれほど読みにくいわけではないので、それのために行ってください!

于 2010-11-02T05:51:28.487 に答える