В Java мы используем ключевое слово final
с переменными, чтобы указать его значения, которые нельзя изменить.
Но я вижу, что вы можете изменить значение в конструкторе/методах класса. Опять же, если переменная static
, то это ошибка компиляции.
Вот код:
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);
}
}
Над кодом работает отлично и никаких ошибок.
Теперь измените переменную как static
:
private static final List foo;
Теперь это ошибка компиляции. Как это работает final
?