ホーム > Java > 第7章-5 無名クラス

Java -無名クラス-

Javaでは、クラス名を持たないクラスを定義することができます。
このようなクラスのことを無名クラスまたは、匿名クラスと呼びます。
主にメソッド内で定義し、利用します。

無名クラス

無名クラスは、定義を行ったうちにそのクラスからインスタンスを生成してから使用します。
また、クラス名を持たず、クラス名を型とする参照変数もありません。

メソッド内でインスタンスを生成した場合は、メソッドが終了するとインスタンスも同時に破棄されてしまいます。

無名クラスは特定のスーパークラスまたはインタフェースを元にして定義し、インスタンスを生成します。

書式1
new スーパークラス名() { … }
書式2
new インタフェース名() { … }

特定のスーパクラスや実装するインタフェースを持たない無名クラスを作成したい場合は、スーパークラスとして Objectクラスを指定します。

スーパークラスを継承した無名クラス

無名クラスでは、スーパークラスを継承する際にextendsキーワードを記述する必要はありません。

参照型変数を利用する場合、無名クラスはそのクラス特有の型を持たないので、スーパークラスの型で参照型変数の宣言する必要があります。

無名クラスの定義を終了する際に記述する中かっこの後ろにはセミコロン(;)が必要です。

インタフェースを実装した無名クラス

無名クラスは、スーパークラスを継承する代わりに、インタフェースを実装して作成することもできます。
無名クラスではimplementsキーワードを記述する必要はありません。

メソッドの引数として利用される無名クラス

無名クラスのインスタンスは、メソッドの引数としてインスタンスを指定する場合などに便利です。

メンバ変数として利用される無名クラス

無名クラスは、メソッド内で利用される場合が多いですが、メンバ変数の定義時に利用することもできます。
この場合は、メソッド内で利用する場合と違って、インスタンス化された後は、クラス内のすべてのメソッドから インスタンスを利用することができます。