Неявное преобразование типов: Java-методы ожидают функциональные интерфейсы, тогда как Kotlin-лямбды имеют свой внутренний тип. Хотя Kotlin компилятор обычно выполняет преобразование, в сложных случаях могут возникнуть ошибки.
null-безопасность: Kotlin-лямбды могут захватывать null-значения, но Java-код может не быть готов к их обработке, что приведет к NullPointerException.
Проверка исключений: Kotlin не требует явной обработки checked-исключений, а Java-методы могут их выбрасывать. Лямбда, переданная в Java, может вызвать unchecked-исключение на стороне Java.
Производительность: Создание анонимных классов (в которые компилируются лямбды) может иметь незначительные накладные расходы, особенно в циклах или при частом создании.
Совместимость версий Java: Kotlin компилируется под определенный уровень байткода Java. Если Java код использует API, недоступные в целевой версии, возникнут проблемы совместимости.
Захват переменных: Обращение к Mutable-переменным из внешнего скоупа внутри лямбды в Java-коде может быть неинтуитивным и потенциально опасным, если синхронизация не предусмотрена.
Дебаггинг: Отладка кода, где взаимодействуют лямбды из Kotlin и Java-код, может быть сложнее из-за различий в стектрейсах и именовании классов.