Javaの内部クラスについて調べてみたけどよく分からなかったという話

ボタンのクリックなどによって発生したイベントを処理するときにインナークラスを利用しているが,自分自身がそのインナークラスについてよく分かっていないのでそれについて調べてみる.

非staticなインナークラス

インスタンスが生成できないと利用できないクラス.

使い方
myButton.setOnClickListener(new ButtonClickListener());

setOnClickListener()メソッドの引数にnew演算子とButtonClickListenerコンストラクターを使用して,ButtonClickListenerクラスのインスタンスを生成して渡す

public class ButtonClickLIstener implements OnClickListener{
    public void onClick(View v){
        //ボタンがクリックされたときの処理
    }
}

staticなインナークラスクラス

インスタンスを生成することなく利用できるクラス.ぶっちゃけ非staticなインナークラスとどう使い分ければよいか分からない...

無名クラス

名前のないクラス.イベントリスナーのように,イベントハンドラとして使用するメソッドのみが重要なクラスでは,その都度クラスを定義する必要がなくなるため,場合によっては便利.

使い方
new インターフェース名(){
    メソッド定義
}

OnClickListenerインターフェースを実装する無名クラスのインスタンスを生成し,onClick()メソッドを定義してmyButtonのイベントリスナーとする場合

myButton.setOnClickListener(new onClickListener (){
    public void onClick(View v){
        //ボタンがクリックされた時の処理
    }
});

ローカルクラス

メソッド内で定義されるインナークラス.

まとめ
ググって色々と調べてみたけど,正直よく理解できなかった...サイトごとで微妙に記述が違って頭の中が「???」となってこんがらがる.

参考にさせて頂いた書籍,サイト
javaからはじめようAndroidプログラミング
MitoRoid