Выбор ответа Junior Java-интероп обновлено

Параметры по умолчанию и Java

Вопрос

Kotlin-функция fun connect(host: String, port: Int = 443) без аннотаций. Как её видит Java?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Как один метод connect(String, int) без дефолтов. Значения по умолчанию это возможность Kotlin, для Java остаётся один метод со всеми параметрами (плюс синтетический служебный метод connect$default).

Варианты ответа

  1. Как два метода: connect(host) и connect(host, port)
  2. Как метод с параметром Optional<Integer> для порта
  3. Как один метод connect(String, int) без дефолтовправильный ответ
  4. Java не может вызвать такую функцию вообще

Разбор

Значения по умолчанию это возможность Kotlin, для Java остаётся один метод со всеми параметрами (плюс синтетический служебный метод connect$default). Чтобы получить перегрузки, функцию помечают @JvmOverloads. Optional компилятор не использует.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме