Я заметил в коде своей системы, что кто-то создал экземпляр анонимного класса следующим образом
Class ExampleClass{
MyObj obj;
methodA(new ClassA(){
@override public void innerMethodA(){
//code...
}
});
}
Пока все хорошо.
Теперь, чтобы использовать объект obj, который был объявлен перед методом, я обычно определяю его как final.
Я действительно не понимаю, почему, но я понимаю, потому что компилятор спрашивает.
В этом коде я вижу в innerMethodA () использование
ExampleClass.this.obj()
без final.
Мои вопросы:
1. почему я должен ставить final при использовании obj?
2. что такое ExampleClass.this? Обратите внимание, что ExampleClass - это класс, а не экземпляр. тогда что такое "это"? если у него несколько экземпляров?
3. Что произойдет, если я изменю объектный объект во время выполнения внутреннего метода (в моем коде внутренний метод работает в цикле, поэтому я планирую его изменить. Взорвется ли он?)