Почему все функции в Android не могут быть Inline

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

Ответ

Inline-функции в Kotlin оптимизируют производительность, избегая накладных расходов на вызов функций, но не все функции могут быть inline из-за ограничений:

  1. Рекурсивные функции - inline приведёт к бесконечному копированию кода
  2. Функции с reified типами - требуют inline для доступа к типам в runtime
  3. Функции высокого порядка - передача лямбд требует inline для избежания создания анонимных классов
  4. Public API функции - inline-функции становятся частью вызывающего кода, что может привести к проблемам бинарной совместимости

Пример:

inline fun <reified T> parseJson(json: String): T { 
    // Требует inline для reified T
    return Gson().fromJson(json, T::class.java)
}