Kotlin: Какие возможности Java 8 еще не поддерживаются?

Есть ли современный обзор возможностей Java 8, которые еще не поддерживаются в Котлине?


Например, вызов метода по умолчанию, такого как Map # putIfAbsent, не может быть скомпилирован (неподдерживаемая опорная ошибка):

import java.util.* fun main(args: Array<String>) { val x : Map<Int, Int> = HashMap<Int, Int>() x.putIfAbsent(1, 2) } 

Если метод по умолчанию переопределен, он работает:

 import java.util.* fun main(args: Array<String>) { val x : HashMap<Int, Int> = HashMap<Int, Int>() x.putIfAbsent(1, 2) } 

Это то, что я узнал из экспериментов, но для решения вопроса о том, возможна ли миграция с кодовой базы Java 8 в Котлин, систематический обзор был бы ценным.


Обновление: код в моем примере был создан конвертером «Java to Kotlin». Как указал пользователь2235698, Map<Int, Int> – неизменяемое отображение Котлина. Тем не менее, этот пример не скомпилируется, когда я меняю его на карту java.util.Map . Однако мое утверждение о том, что оно должно что-то делать со стандартными методами, вводит в заблуждение.

Поскольку это выходит за рамки этого вопроса, я открыл следующий вопрос: здесь java.util.HashMap не реализует java.util.Map в Котлине?

Известные проблемы взаимодействия Java 8 отслеживаются как подзадачи этой проблемы

Map неизменна, и HashMap изменен в Kotlin, поэтому вы не можете поставить пару ключевых значений в первом случае.

Подробнее