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