Для чего используется :: во второй строке? Знаю , что в Java это ссылка на статический метод в лямбде. Более короткий синтаксис. Для чего это используется в Kotlin?
Эта запись аналогична takeIf { it.isNotEmpty() }
Двоеточие в котлине означает получение ссылки на функцию/свойство. Строка List::isEmpty в частности возвращает ссылку типа (List<Int>) -> Boolean. У takeIf аргумент - это функциональный тип (T) -> Boolean, в данном случае List<Int> -> Boolean.