Private Methode rufenden Konventionen
-
27-09-2019 - |
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 AufrufLö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.