Hat einer bestanden final-variable in Java-Aufenthalt endgültig auf die andere Seite?
Habe ich nur über einige code, verwirrt mich etwas; es gibt eigentlich 2 Varianten, die ich möchte, zu klären.
Beispiel 1:
public String getFilepath(){
final File file = new File(this.folder, this.filename);
return file.getAbsolutePath();
}
Was wäre der Zweck deklarieren file
"final
"? Da Java-primitive, die als Wert übergeben werden, und getAbsolutePath()
ist einfach wieder ein String
die variable nicht final
auf der anderen Seite (calling method), oder? Und da die file
variable existiert nur innerhalb des Geltungsbereiches dieser 2 Linien, ich sehe nicht wirklich irgendeinen Zweck, der final
Schlüsselwort. Gibt es etwas, was ich bin fehlt? Jemand einen Grund sehen, dies zu tun?
Beispiel 2:
public String getFilepath(){
final File file = new File(this.folder, this.filename);
return file;
}
Da hier das eigentliche Objekt zurückgegeben wird... bedeutet das, dass das file
variable Konstante/final
auf der anderen Seite...? Es scheint nicht sinnvoll.
Im Allgemeinen, es scheint mir, dass Sie übergeben Sie eine variable, ohne es Zugang geben. Wie kann ich private
variable in einer Funktion mit einem public
get-Funktion, die gibt es - aber die variable, erhält es durch den Aufruf der Funktion angeben, eine access-modifier. Also, wenn es gibt public
der zurückgegebene variable public
in diesem Bereich. Wenn es gibt private
der zurückgegebene variable private
in diesem Bereich. Gibt es einen Unterschied mit final
? Ist die "Konstanz" der eine variable etwas, das weitergegeben werden kann? Das scheint mir eher unwahrscheinlich, wenn man bedenkt, was ich weiß, von Java.
Oder Liege ich vollkommen daneben und es gibt einige andere Zweck der final
Schlüsselwort in dem obigen code?
Edit:
Ich checkte wieder mit der ursprünglichen Entwickler haben den code geschrieben, und er sagte, dass er nur die final
Schlüsselwort, weil er ursprünglich dachte die Methode wäre viel länger, und wollte sicherstellen, dass die Datei blieb konstant. Er sagte auch, dass er generell deklariert Variablen, die nicht geändert werden sollte, als final
in der Regel über die board-und Art-on-Prinzip - ein Punkt, der sowohl die Antworten, die unten genannten. So es scheint, ich war zu viel zu Lesen, in eine einfache extra-keyword enthalten, für die standards Gründen. Vielen Dank an alle!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Manche Menschen könnte Ihnen sagen, dass es einen performance-Vorteil durch die Verwendung von Finale, aber das ist in keiner Weise schlüssig nachgewiesen.
Den primären nutzen der
final
Schlüsselwort ist für die Programmierer, um anzuzeigen, dass eine Klasse, Methode oder Feld sollte nicht verändert werden.Beachten Sie, dass die Deklaration einer Variablen
final
nicht das referenzierte Objekt unveränderlich. Es bedeutet nur, dass die variable nicht haben, ist es Wert zugewiesen. Können Sie noch ausführen-Methoden der variablefile
das könnte sich ändern, dieFile
Objekt.In der zwei Methoden, die Sie geben, ich sehe keinen Wert bei der Herstellung der
file
variablefinal
. Einige code-Konventionen befürworten, dass alle Variablenfinal
es sei denn, die geändert werden müssen. Einige Leute nicht Zustimmen. Ich halte es für eine variation auf die Vorsorgeprinzip.final
Schlüsselwort (obwohl Sie gemeinsam genutzt werden können, in Java, diefinal
Schlüsselwort nicht die Memoization Muster innewohnende Geschwindigkeit profitieren).final
in diesem Fall nur bedeutet, dass der lokale Bezugfile
wird unveränderlich. Es hat keine Bedeutung außerhalb der Methode. Einige coding-Konventionen befürworten, wenn alle Variablen final, es sei denn, Sie werden müssen wandelbar ist, so sehen Sie code wie, dass, wenn jemand nach solchen Leitlinien.