[JavaGold対策]紫本2章関数型インターフェースとラムダ式

紫本2章 関数型インターフェースとラムダ式

  • クラス内にはネストクラスという、別のクラスを定義することができる→強力なカプセル化と情報隠蔽ができる
  • 取り囲む外側のクラスをエンクロージングクラスという
クラスの種類関連付けインスタンス化に必要なこと
内部クラスエンクロージングクラスのインスタンスエンクロージングクラスのインスタンス化
staticなネストクラスエンクロージングクラス自体エンクロージングクラスのインスタンス化不要
  • @FunctionalInterfaceアノテーションは、関数型インターフェースにつける、関数型インターフェースは一個しかメソッドをもてない!
  • 特定のブロック内で一時的に使用する目的で作成するクラスをローカルクラスという
  • 非staticなネストクラスとなる→アクセス修飾子の指定やstaticは不可

ローカルクラスの特徴

  • 修飾子はabstract/finalが指定可能
  • エンクロージングクラスのメンバにアクセス可能
  • 外側のブロックのfinal,実質的finalなローカル変数にアクセス可能

無名クラスの特徴

  • 一時的に参照型の値が必要な場合に、その場でクラスの作成とインスタンス化を行う
  • クラス名を持たないため、サブクラスか、インターフェースの実装クラスとして作成する

ラムダ式

  • 無名クラスを完結に記述できるようにしたもの
  • 関数型インターフェースからオブジェクト生成までを完結に記述する→コンパイラが関数型インターフェースの型推論ができる場所で使える
  • 構文(引数リスト) -> {メソッドの処理}

メソッド参照

  • 関数型インターフェースの抽象メソッドの実装が、既存のメソッドを呼び出すだけのことがある
  • ラムダ式の代わりにメソッド参照を利用できる
  • 構文クラス(参照変数)名::メソッド名

2026-04-29 23:16