Frage

Ich habe gerade vor kurzem begonnen, Java zu lernen. Ich habe eine Frage, die mehr über Konventionen in Java verwendet wird, ist ...

So nehme ich habe Klasse A:

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

  private void methodB{
  }
}

Manchmal sehe ich einige Leute in der Klasse private Methoden aufrufen mit diesem (zum Beispiel dieses .methodB ();), auch wenn es keine Zweideutigkeit ist. Ist es Konvention explizit Menschen zeigen, dass sie private Methode oder ist es nur jemand ‚Stil‘ .

sind Aufruf
War es hilfreich?

Lösung

An und für sich, this Verwendung klärt nicht viel. Es kann verweisen auf:

  • Eine Instanz Feld (oder Methode) oder eine innere Klasse von this, unabhängig von ihrer Sichtbarkeit.
  • Ein statisches Feld oder eine Methode oder eine verschachtelte Klasse, eines der von this Klasse geerbten Klassen. (Es ist in der Regel eine Warnung in diesem Fall, aber es ist nur eine Warnung).

Was es nicht daran hindert ist:

  • statische Importe
  • lokale Variablen
  • Klasse Importe (wenn Sie eine verschachtelte Klasse mit dem gleichen Namen wie eine importierte Klasse)

Ich werde betonen, dass es überhaupt nicht garantieren, dass die genannte Methode privat ist.

Es ist das erste Mal, dass ich von dieser Regel hören - ich vermute, dass bei den meisten ist es eine (nicht hilfreich) Stilregel eines Unternehmens

.

Andere Tipps

Das ist, gerade Stil. Ich persönlich irgendwie wie übermäßig explizit als Mitglieder zugreifen, aber ich kann auch verstehen, dass die Leute es hässlich finden, besonders wenn Sie Methoden oder Eigenschaften der äußeren Klasse von einer inneren Klasse sind mit:

 public class Outer {

       private SomeType member;

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

Es kann in seltenen Fällen helfen, wo Sie einen Namen Shadowing Problem einführen später ohne es zu bemerken - ganz plötzlich bist du die falsche Funktion aufrufen oder die falsche Variable zugreifen. Dennoch mit this Qualifikation ist ausführlich, und es ist nicht eine allgemeine Regel.

Ein wenig Off-Topic, dass wir nicht eine private Methode, sondern eine private Klassenvariable Adressierung, aber es ist erwähnenswert, dass manchmal this notwendig ist, um Unklarheiten zu vermeiden:

public class Example {

  private RowMapper rowMapper;

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

Im Großen und Ganzen, wo es keine Zweideutigkeit dann this ist redundant Syntax.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top