В чем разница между Serializable и Parcelable

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

Ответ

Serializable — стандартный Java-интерфейс для сериализации объектов. Прост в использовании (достаточно implements Serializable), но работает медленно из-за рефлексии и создания лишних объектов.

Parcelable — Android-специфичный интерфейс для высокопроизводительной сериализации. Требует ручной реализации методов (writeToParcel, describeContents), но работает быстрее, т.к. избегает рефлексии. Рекомендуется для передачи данных между компонентами (например, в Intent).

Пример Parcelable:

data class User(val name: String, val age: Int) : Parcelable {
    override fun writeToParcel(dest: Parcel, flags: Int) {
        dest.writeString(name)
        dest.writeInt(age)
    }
    // Creator и другие методы опущены для краткости
}

Вывод: Используйте Parcelable для Android, если важна производительность. Serializable — для простых случаев или кросс-платформенных решений.