Ответ
Да, сталкивался. Externalizable — это интерфейс, расширяющий Serializable, который позволяет полностью контролировать процесс сериализации/десериализации. В отличие от Serializable, где процесс автоматический, здесь нужно явно реализовать методы writeExternal() и readExternal().
Пример:
class User : Externalizable {
var name: String = ""
var age: Int = 0
override fun writeExternal(out: ObjectOutput) {
out.writeUTF(name)
out.writeInt(age)
}
override fun readExternal(input: ObjectInput) {
name = input.readUTF()
age = input.readInt()
}
}
Нюансы:
- Требует публичного конструктора без аргументов
- Более гибкий, но требует ручного управления полями
- Может быть быстрее
Serializableдля сложных объектов