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?