無名インナークラス in Java

昨日Javaでわけがわからんと言っていたのは無名インナークラスのオブジェクトだそうだ。staticでないインナークラスは、生成時の親(外側のクラス)のオブジェクトのポインタを持っていて、親のメンバーにアクセスできるらしい。さらに、問題の new MouseListener() { .. }というような式で生成されるのは、無名(クラス名を持たない)の無名インナークラスのオブジェクトで、newの次にくるのはクラス名かインターフェース名、クラス名の場合はそのクラスを継承した無名クラス、インターフェースの場合はObjectを継承し、そのインターフェースを実装した無名クラスのオブジェクトが生成される。普通のクラス宣言を使っても実現できる機能を、コンパクトかつわかりやすく記述できるまさに シンタックス・シュガーというわけだ。

わかって、すっきり。安心して 無名インナークラスを使おう。

Leave a Reply

メールアドレスが公開されることはありません。