Можно ли положить data class в Bundle

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

Ответ

Да, можно, но с ограничениями. Data class должен реализовывать Parcelable или Serializable.

Пример с Parcelable:

@Parcelize
data class User(val name: String, val age: Int) : Parcelable

// Запись в Bundle
val bundle = Bundle().apply { 
    putParcelable("user", User("Alex", 25)) 
}

// Чтение из Bundle
val user = bundle.getParcelable<User>("user")

Ограничения:

  • При использовании Serializable возможны проблемы с производительностью.
  • Поля data class должны быть примитивами или поддерживать Parcelable/Serializable.
  • Размер Bundle ограничен (обычно 1 МБ для транзакций).

Для сложных объектов лучше использовать другие подходы, например, Room или SharedPreferences.