575 Stimmen

Wie funktioniert das Schlüsselwort "final" in Java? (Ich kann ein Objekt immer noch ändern.)

In Java verwenden wir final Schlüsselwort mit Variablen, um anzugeben, dass seine Werte nicht geändert werden sollen. Aber ich sehe, dass Sie den Wert in den Konstruktor / Methoden der Klasse ändern können. Nochmals, wenn die Variable static dann handelt es sich um einen Kompilierungsfehler.

Hier ist der 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);
  }
}

Der obige Code funktioniert einwandfrei und ohne Fehler.

Ändern Sie nun die Variable in static :

private static final List foo;

Jetzt ist es ein Kompilierungsfehler. Wie funktioniert das final wirklich funktionieren?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X