Что такое ограничение сверху у дженерика

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

Ответ

Ограничение сверху (upper bound) в дженериках указывает, что тип-параметр должен быть подтипом указанного класса или интерфейса. Используется через ключевое слово extends.

Пример:

fun <T : Number> sum(list: List<T>): Double {
    return list.sumOf { it.toDouble() }
}

Здесь T может быть только Number или его подтипом (например, Int, Double).

Особенности:

  • Можно указывать только один класс (в Kotlin)
  • Можно добавлять несколько интерфейсов через where
  • По умолчанию верхняя граница - Any?