Как работает ключевое слово «final» в Java? (Я все еще могу изменить объект.)JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Как работает ключевое слово «final» в Java? (Я все еще могу изменить объект.)

Сообщение Anonymous »

В Java мы используем ключевое слово Final с переменными, чтобы указать, что их значения не подлежат изменению.
Но я вижу, что вы можете изменить значение в конструкторе/методах класса. Опять же, если переменная статическая, то это ошибка компиляции.

Вот код:

Код: Выделить всё

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);
}
}
Приведенный выше код работает нормально и без ошибок.

Теперь измените переменную как статическую:< /p>

Код: Выделить всё

private static final List foo;
Теперь это ошибка компиляции. Как на самом деле работает этот финал?

Подробнее здесь: https://stackoverflow.com/questions/156 ... -an-object
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»