Java無名インナークラス完全ガイド:定義、構文、実践例
Java無名インナークラスをマスターする
明確で実践的な例で、Javaの無名インナークラスの定義、実装、活用方法を発見してください。
Javaでは、クラスが別のクラスをネストできます——インナークラスです。そのインナークラスに明示的な名前がない場合、無名インナークラスと呼ばれます。
無名インナークラスは、別のクラスや式の中にインラインで定義されます。名前がないため、囲むコードが実行されるときにのみ作成され、短いワンショット実装に最適です。
典型的なパターンは:
class OuterClass { // 無名インナークラスインスタンスを作成 Type instance = new Type(parameters) { // オーバーライドメソッドや追加振る舞い }; }
ここで、Typeは以下のいずれかです:
- 無名クラスが継承するスーパークラス
- 無名クラスが実装するインターフェース
実行時、上記ステートメントは無名クラスのインスタンスを構築し、宣言された参照型を通じて使用できます。
重要: 宣言が式であるため、終了セミコロンはクラスボディではなくステートメントを終了します。
例1:無名インナークラスでクラスを拡張
class Polygon { public void display() { System.out.println("Inside the Polygon class"); } } class AnonymousDemo { public void createClass() { Polygon p1 = new Polygon() { @Override public void display() { System.out.println("Inside an anonymous class."); } }; p1.display(); } } public class Main { public static void main(String[] args) { new AnonymousDemo().createClass(); } }
出力**
Inside an anonymous class.
この例では、無名クラスがPolygonを継承し、display()をオーバーライドしています。createClass()実行時に無名サブクラスのインスタンスが作成され、オーバーライドされたメソッドが呼び出されます。
例2:無名インナークラスでインターフェースを実装
interface Polygon { void display(); } class AnonymousDemo { public void createClass() { Polygon p1 = new Polygon() { @Override public void display() { System.out.println("Inside an anonymous class."); } }; p1.display(); } } public class Main { public static void main(String[] args) { new AnonymousDemo().createClass(); } }
出力**
Inside an anonymous class.
ここでは、無名クラスがPolygonインターフェースを実装し、必要なメソッド実装を単一の簡潔なブロックで提供しています。
なぜ無名インナークラスを使うのか?
無名インナークラスは、簡潔でコンテキスト固有の実装が必要な場面で輝きます:
- イベントリスナーとコールバック(GUIフレームワーク)——別名クラスを作らずに振る舞いをアタッチ。
Runnableによるスレッド作成——runロジックをインラインで記述。- ローカルアダプタやラッパー——既存クラスの一部メソッドをオーバーライド。
メリット:
- 簡潔さ——別ファイルやクラス宣言が不要。
- スコープ制御——クラスは定義された場所でのみ可視。
- 実行時柔軟性——インスタンスは必要時のみ作成。
より大規模で再利用可能なロジックには、名前付きクラスやラムダ式(関数型インターフェースの場合)を検討し、コードを保守しやすく保ちましょう。
Java
- Javaのfinalキーワード完全解説:変数、メソッド、クラスでの活用法
- Java instanceof演算子完全ガイド:基本から継承・インターフェースまで
- Java継承のマスター:概念、種類、実践例
- Java Staticネストクラスの理解:用法、違い、実例
- Javaシングルトンパターン完全解説:安全な実装と活用法
- Javaリフレクション完全ガイド:実行時のクラス・メソッド・フィールド検査
- Java ArrayList完全マスター:操作・メソッド・ベストプラクティス
- Java Stackクラス完全ガイド:使い方と主要メソッド
- Java ObjectOutputStream完全ガイド:シリアル化、メソッド、実践例
- Javaジェネリクス完全ガイド:再利用可能で型安全なコードの構築
- Javaファイル操作のマスター:java.ioによる作成・読み取り・書き込み・削除