Geekroid-ギークロイド(仮)|ITエンジニアの日常をささいな情報で彩るコラム

ITエンジニアの転職

無名クラスを定義する

無名クラスを定義する
new clazz() { definition }
new interfaze() { definition }
clazz:スーパークラスの名前
interfaze:インターフェイスの名前
definition:無名クラスの定義

無名クラス(匿名クラス)を利用することで、クラスやインターフェイスの継承/実装からインスタンス化までをまとめて1文で表現できます。使い捨てのクラスを用意する際などによく利用されます(イベントリスナーの定義などでよく見かけるかもしれません)。
たとえば以下はIPrintableインターフェイスの実装クラスを無名クラスで表したものです。

IPrintable.java

package com.example.mynavi.object;

public interface IPrintable {
  void print();
}

AnonymousSample.java

package com.example.mynavi.object;

public class AnonymousSample {

  public static void main(String[] args) {
    IPrintable p = new IPrintable() {
      @Override
      public void print() {
        System.out.println("TEST");
      }
    };
    p.print();  // 結果:TEST
  }
}

関連ページ
ネストクラス

継承、インターフェイス
extendsキーワード
interface命令
implementsキーワード
無名クラスを定義する
ラムダ式を利用する

Geekroid-ギークロイド(仮)|ITエンジニアの日常をささいな情報で彩るコラム

ITエンジニアの転職