Можно ли использовать модификатор inner с data class

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

Ответ

Нет, модификатор inner нельзя использовать с data class в Kotlin.

Причины:

  1. data class не может быть объявлена как inner, потому что это противоречит её предназначению — хранению данных с автоматически генерируемыми методами (equals(), hashCode(), toString() и т. д.).
  2. inner классы имеют неявную ссылку на внешний класс, что усложнило бы генерацию этих методов.

Пример ошибки:

class Outer {
    inner data class User(val name: String) // Ошибка: Modifier 'inner' is not applicable to 'data class'
}

Если нужен доступ к внешнему классу, лучше использовать обычный inner class без data.