この講義では、クロージャとは何か、そして Java でどのように機能するかを解説します。具体的には、ラムダ式や無名クラスが外側の変数をどのように「キャプチャ」するのか、なぜローカル変数は
final または実質的に final でなければならないのか、ローカル変数のキャプチャとクラスのフィールドへのアクセスの違い、そして
this がラムダ式と無名クラスでどのように振る舞うのかを扱います。さらに、
IntSupplier を使った関数ファクトリ、キャプチャの内部実装、そして典型的な誤り(たとえばコンパイラのメッセージ
Variable used in lambda expression should be final or effectively final)も取り上げます。