Heim >Java >javaLernprogramm >Wie wirkt sich das Schlüsselwort „final' von Java auf die Objektänderung aus?

Wie wirkt sich das Schlüsselwort „final' von Java auf die Objektänderung aus?

DDD
DDDOriginal
2024-12-15 18:04:14431Durchsuche

How Does Java's `final` Keyword Affect Object Modification?

So funktioniert das Schlüsselwort „final“ in Java (Objekte ändern)

In Java wird das Schlüsselwort „final“ verwendet, um Variablen mit unveränderlichen Werten zu deklarieren. Es kann jedoch vorkommen, dass Sie ein einer endgültigen Variablen zugewiesenes Objekt dennoch ändern können. Dieses Verhalten erfordert ein tieferes Verständnis der Funktionalität von final.

Variable Finalität

Instanzvariablen:

  • Final-Instanzvariablen können im initialisiert werden Konstruktor.
  • Nach der Initialisierung können sie keinem anderen Objekt erneut zugewiesen werden Referenz.
  • Der Inhalt des Objekts (z. B. wenn es sich um eine Sammlung handelt) kann jedoch weiterhin geändert werden.

Statische Variablen:

  • Endgültige statische Variablen müssen in der Klassendeklaration selbst initialisiert werden.
  • Sie können nicht in initialisiert werden Konstruktoren oder Methoden.

Beispiel

Betrachten Sie den folgenden Code:

import java.util.ArrayList;
import java.util.List;

class Test {
  private final List foo;

  public Test() {
      foo = new ArrayList();
      foo.add("foo"); // Modification-1
  }

  public static void main(String[] args) {
      Test t = new Test();
      t.foo.add("bar"); // Modification-2
      System.out.println("print - " + t.foo);
  }
}
  • Modifikation-1: Die letzte Instanz Die Variable foo wird mit einem neuen ArrayList-Objekt in initialisiert Konstruktor.
  • Änderung-2: Die add()-Methode wird verwendet, um den Inhalt der Foo-Liste zu ändern, was zulässig ist.

Effektiv Final in Java 1.8

Java 1.8 führte das Konzept der „effektiv endgültigen“ Variablen ein. Hierbei handelt es sich um lokale Variablen, die innerhalb verschachtelter Klassen oder anonymer innerer Klassen praktisch unveränderlich sind. Obwohl sie nicht das Schlüsselwort „final“ verwenden, können sie nicht neu zugewiesen werden.

Unterklassen und Überschreibungen

  • Abschlussklassen:Kann nicht in Unterklassen unterteilt werden.
  • Endgültige Methoden: Kann nicht überschrieben werden (in Unterklassen).
  • Endgültige Methoden in Oberklassen:Kann in Unterklassen überschrieben werden.

Das obige ist der detaillierte Inhalt vonWie wirkt sich das Schlüsselwort „final' von Java auf die Objektänderung aus?. 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