1

最近Javaを学び始めたばかりです。Javaで使用される規則についてもっと質問があります...

したがって、クラス A があるとします。

public class A {
  public void methodA{
    methodB();
  }

  private void methodB{
  }
}

あいまいさがない場合でも、 this を使用してクラス内でプライベートメソッドを呼び出している人を時々見かけます (例: this .methodB( ) ; ) private メソッドを呼び出していることを明示的に示すのは規則ですか、それとも単に誰かの'style'ですか。

4

3 に答える 3

2

それ自体では、使用thisしてもあまり明確になりません。次を指すことができます。

  • this可視性に関係なく、のインスタンス フィールド (またはメソッド) または内部クラス。
  • のクラスによって継承されるいずれかのクラスの静的フィールドまたはメソッド、またはネストされたthisクラス。(その場合は通常警告が出ますが、あくまで警告です)。

それが防ぐものは次のとおりです。

  • 静的インポート
  • ローカル変数
  • クラスのインポート (インポートされたクラスと同じ名前のネストされたクラスがある場合)

呼び出されたメソッドがプライベートであることをまったく保証しないことを強調しておきます。

このルールについて聞いたのは初めてです。せいぜい、会社のスタイル ルール (あまり役に立たない) ではないかと思います。

于 2010-10-28T08:15:18.917 に答える
1

それはただのスタイルです。個人的には、メンバーにアクセスするときに過度に明示的であることが好きですが、特に内部クラスから外部クラスのメソッドまたはプロパティを使用している場合、人々がそれを醜く感じるのも理解できます。

 public class Outer {

       private SomeType member;

       private class Inner {
          public void innerMethod() {
              Outer.this.member.someFunction();
          }
       }
 }

後で気付かずに名前のシャドウイングの問題が発生するというまれなケースで役立つ場合があります。突然、間違った関数を呼び出したり、間違った変数にアクセスしたりしています。それでも、修飾thisは冗長であり、一般的な規則ではありません。

于 2010-10-28T08:21:47.190 に答える
0

プライベート メソッドではなく、プライベート クラス変数に対処しているという点で、少しトピックから外れていますが、thisあいまいさを防ぐために必要な場合があることに言及する価値があります。

public class Example {

  private RowMapper rowMapper;

  public void setRowMapper(RowMapper rowMapper) {
    this.rowMapper = rowMapper;
  }
}

全体として、あいまいさがない場合thisは冗長な構文です。

于 2010-10-28T09:18:40.053 に答える