Изменить локальную переменную из анонимного внутреннего класса - PullRequest
0 голосов
/ 06 декабря 2018

Я обнаружил, что мы не можем изменять локальные переменные из внутреннего класса, так как он определен как final.При чтении я обнаружил, что мы должны пометить его как окончательный, чтобы он не создавал проблему несоответствия значений.Но что, если мы действительно хотим изменить локальную переменную из внутреннего класса.Есть ли работа вокруг?

1 Ответ

0 голосов
/ 06 декабря 2018

Вы не можете изменять локальную переменную.Но если локальная переменная является ссылкой на объект, вы можете изменить объект, на который она ссылается.Например:

public static void main(String[] args) {
    final AtomicReference<String> value = new AtomicReference<String>("hello");

    System.out.println(value); // prints "hello"

    new Runnable() {
        public void run() { value.set("goodbye"); }
    }.run();

    System.out.println(value); // prints "goodbye"
}
...