Общий вопрос по созданию экземпляра анонимного класса


Я заметил в коде своей системы, что кто-то создал экземпляр анонимного класса следующим образом

 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. Что произойдет, если я изменю объектный объект во время выполнения внутреннего метода (в моем коде внутренний метод работает в цикле, поэтому я планирую его изменить. Взорвется ли он?)

0
задан Bick 28 April 2011 в 08:47
поделиться