English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Unterschied zwischen Serialisierung und Externalisierung in Java

Serialisierung und Externalisierung sind Prozesse, bei denen Objekte in Byte-Streams umgewandelt und diese Byte-Streams in Datenbanken oder im Speicher gespeichert werden. Klassen, die das Interface java.io.Serializable implementieren, können serialisiert werden. Andererseits wird Externalisierung nach den Anforderungen der Anwendung zur benutzerdefinierten Serialisierung verwendet. Externalisierung erweitert java.io.Serializable. 

序号序列化外在化
1
Schnittstelle
Serialisierung ist ein markiertes Interface 
Externalisierung enthält zwei Methoden readExternal und writeExternal. 
2 
Implementierungslogik 
Klassen, die dieses Interface implementieren, übertragen die Verantwortung für die Serialisierung oder Persistenz an das JVM. Das JVM verwendet readObject und writeObject für die Serialisierung 
Externalisierung bietet durch das Überschreiben der Methoden readExternal und writeExternal der Implementierungslógik der Anwendung eine Implementierungskontrolle.
3 
Methode zur Ignorierung von Variablen 
In der Serialisierung ignoriert der JVM während des Serialisierungs- und Deserialisierungsprozesses von Java-Objekten Transient-Variablen 
Programmierer können ihre eigenen Logiken schreiben, um bestimmte Variablen im Prozess der Externalisierung von Java-Objekten zu ignorieren 
4 
Leistung 
In der serialisierbaren Schnittstelle führt Reflection zu einer Leistungsminderung.
Externalisierung ermöglicht eine vollständige Kontrolle über die Implementierungsmethoden. 
5 
Objektserialisierung mit Vererbung 
1.Wenn die Superklasse nicht serialisiert ist, kann die Unterklasse dennoch serialisiert werden.
2.Wenn die Unterklasse nicht serialisiert ist, aber die Superklasse automatisch serialisiert wird 
Wir können es auch auf Externalisierung anwenden.

externalisierbarer Beispiel

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();
   {}
{}

serialisierbarer Beispiel

class SerializableExample implements Serializable {
   private static final long serialVersionUID = 5081877L;
   String name;
{}