English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Сериализация и внешняяализация - это процесс преобразования объектов в поток байтов и хранения потоков байтов в базе данных или памяти. Классы, реализующие интерфейс java.io.Serializable, могут быть сериализованы. С другой стороны, внешняяализация используется для пользовательской сериализации в зависимости от требований приложения. Внешняяализация расширяет java.io.Serializable.
Номер | Ключ | Сериализация | Внешняя сериализация |
---|---|---|---|
1 | Интерфейс | Сериализация - это маркер интерфейса | Внешняя сериализация включает два метода readExternal и writeExternal. |
2 | Логическая реализация | Классы, реализующие этот интерфейс, передают JVM ответственность за сериализацию или сохранение Java объекта. JVM использует readObject и writeObject для сериализации | Внешняя сериализация предоставляет приложение логическим контролем через перезапись методов readExternal и writeExternal. |
3 | Методы игнорирования переменных | В процессе сериализации JVM игнорирует временные переменные Java объекта во время его сериализации и десериализации | Программист может написать свою логику для игнорирования некоторых переменных в процессе внешней сериализации Java объекта |
4 | Производительность | В интерфейсе Serializable использование反射 может привести к снижению производительности. | Внешняя сериализация позволяет полностью контролировать метод реализации. |
5 | Сериализация объектов с наследованием | 1. Если суперкласс не сереализуется, подкласс все еще может сереализоваться. 2. Если подкласс не сереализуется, но суперкласс может автоматически сереализоваться | Мы также можем применить это к внешней сериализации. |
class ExternalizableExample implements Externalizable { Integer id; @Override public void writeExternal(ObjectOutput out) throws IOException { out.writeInt(id); } @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException { this.id = in.readInt(); } }
class SerializableExample implements Serializable { private static final long serialVersionUID = 5081877L; String name; }