[JavaGold対策]紫本2章関数型インターフェースとラムダ式
紫本2章 関数型インターフェースとラムダ式
- クラス内にはネストクラスという、別のクラスを定義することができる→強力なカプセル化と情報隠蔽ができる
- 取り囲む外側のクラスをエンクロージングクラスという
| クラスの種類 | 関連付け | インスタンス化に必要なこと |
|---|
| 内部クラス | エンクロージングクラスのインスタンス | エンクロージングクラスのインスタンス化 |
| staticなネストクラス | エンクロージングクラス自体 | エンクロージングクラスのインスタンス化不要 |
- @FunctionalInterfaceアノテーションは、関数型インターフェースにつける、関数型インターフェースは一個しかメソッドをもてない!
- 特定のブロック内で一時的に使用する目的で作成するクラスをローカルクラスという
- 非staticなネストクラスとなる→アクセス修飾子の指定やstaticは不可
ローカルクラスの特徴
- 修飾子はabstract/finalが指定可能
- エンクロージングクラスのメンバにアクセス可能
- 外側のブロックのfinal,実質的finalなローカル変数にアクセス可能
無名クラスの特徴
- 一時的に参照型の値が必要な場合に、その場でクラスの作成とインスタンス化を行う
- クラス名を持たないため、サブクラスか、インターフェースの実装クラスとして作成する
ラムダ式
- 無名クラスを完結に記述できるようにしたもの
- 関数型インターフェースからオブジェクト生成までを完結に記述する→コンパイラが関数型インターフェースの型推論ができる場所で使える
- 構文
(引数リスト) -> {メソッドの処理}
メソッド参照
- 関数型インターフェースの抽象メソッドの実装が、既存のメソッドを呼び出すだけのことがある
- ラムダ式の代わりにメソッド参照を利用できる
- 構文
クラス(参照変数)名::メソッド名
2026-04-29 23:16