Розбираємося, як Kotlin на JVM «дружить» із Java‑API, що приймають функціональні інтерфейси (SAM‑типи,
Single Abstract Method): як лямбда автоматично перетворюється на
Runnable,
Predicate або
Comparator; як працює синтаксис trailing‑lambda; чому інколи виникає неоднозначність під час перевантаження; і яких практичних помилок найчастіше припускаються (переповнення в компараторі, плутанина типів
Predicate<T> vs
(T) -> Boolean, захоплення зовнішнього
var).