Выбор ответа Middle Функции, расширения и scope-функции обновлено
Зачем нужен @JvmOverloads
Вопрос
Зачем добавляют @JvmOverloads к функции с параметрами по умолчанию?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Чтобы Java получила перегрузки вместо значений по умолчанию. Java не знает о параметрах по умолчанию и видит один метод со всеми параметрами. @JvmOverloads генерирует набор перегрузок, отбрасывая параметры с дефолтами справа налево.
Варианты ответа
- Чтобы Kotlin-код мог вызывать функцию без части аргументов
- Чтобы ускорить вызов функции за счёт инлайнинга
- Чтобы разрешить переопределение функции в наследниках
- Чтобы Java получила перегрузки вместо значений по умолчаниюправильный ответ
Разбор
Java не знает о параметрах по умолчанию и видит один метод со всеми параметрами. @JvmOverloads генерирует набор перегрузок, отбрасывая параметры с дефолтами справа налево. В Android это классика для кастомных View: конструкторы (context), (context, attrs), (context, attrs, defStyleAttr). Kotlin-коду аннотация не нужна, на скорость и наследование она не влияет.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.