Heim  >  Artikel  >  Java  >  Warum werden Methodenparameter in Java selten als „final' markiert?

Warum werden Methodenparameter in Java selten als „final' markiert?

Barbara Streisand
Barbara StreisandOriginal
2024-11-22 07:11:21395Durchsuche

Why are method parameters rarely marked `final` in Java?

Warum nicht final für Methodenparameter verwenden?

Das Schlüsselwort final für Methodenparameter hat einen begrenzten Nutzen.

Keine Auswirkung auf primitive Parameter

Wenn ein primitiver Typ als Methodenparameter verwendet wird, hat die Markierung als „final“ keine Auswirkung. Primitive Parameter werden als Wert übergeben, was bedeutet, dass alle am Wert innerhalb der Methode vorgenommenen Änderungen nicht außerhalb der Methode widergespiegelt werden.

Begrenzte Auswirkung auf nicht-primitive Parameter

Für nicht-primitive Parameter ( Wenn Sie sie als endgültig markieren, kann die Methode dem Parameter keine neue Referenz zuweisen. Das Objekt selbst kann jedoch weiterhin geändert werden.

Gegenbeispiel

Das folgende Beispiel veranschaulicht diese Einschränkungen:

public void changeParameter(Collection<Integer> c) {
    c = new ArrayList<>(); // Can't assign a new reference
    c.add(5); // Mutating the object is still possible
}

Auch wenn c als final markiert ist, ist die Methode Ändert die Sammlung, auf die c verweist.

Warum final für Methodenparameter verwenden?

Trotzdem Trotz aller Einschränkungen bietet das Markieren von Parametern als endgültig einen entscheidenden Vorteil: Es verhindert, dass die Methode den Parameter versehentlich einem anderen Objekt neu zuweist. Dies kann dazu beitragen, Fehler zu vermeiden, wenn die Methode auf dem Objekt basiert, auf das der Parameter verweist.

Empfehlung

Im Allgemeinen wird empfohlen, Methodenparameter als „final“ zu markieren, es sei denn, es gibt einen bestimmten Grund, dies nicht zu tun. Es verbessert die Lesbarkeit und verhindert versehentliche Fehler. Es ist jedoch wichtig, sich der Einschränkungen von final bewusst zu sein, wenn es mit nicht-primitiven Parametern verwendet wird.

Der unveränderliche Fall

In einem wichtigen Fall ist es wichtig, Parameter als final zu kennzeichnen: wann Die Methode garantiert, dass das vom Parameter referenzierte Objekt nicht geändert wird. Diese Sicherheit kann erreicht werden, wenn das Objekt unveränderlich ist, d. h. sein Zustand kann nicht geändert werden. Zum Beispiel:

public void processImmutableObject(final ImmutableClass obj) {
    // obj's state will not change
}

In diesem Szenario verhindert die Markierung von obj final, dass die Methode das Objekt versehentlich ändert.

Das obige ist der detaillierte Inhalt vonWarum werden Methodenparameter in Java selten als „final' markiert?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn