Для чего нужна аннотация JvmOverloads

«Для чего нужна аннотация JvmOverloads» — вопрос из категории Kotlin, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Аннотация @JvmOverloads генерирует перегруженные версии функции с параметрами по умолчанию для совместимости с Java. В Kotlin можно задать значения по умолчанию, но Java их не поддерживает.

Пример:

@JvmOverloads
fun greet(name: String, greeting: String = "Hello") {
    println("$greeting, $name!")
}

В Java можно вызвать так:

greet("Alice"); // Hello, Alice!  
greet("Bob", "Hi"); // Hi, Bob!  

Без аннотации пришлось бы явно передавать все параметры.