English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
La serializzazione e l'esternalizzazione sono processi che trasformano gli oggetti in flussi di byte e memorizzano il flusso di byte nei database o nella memoria. Le classi che implementano l'interfaccia java.io.Serializable possono essere serializzate. D'altra parte, l'esternalizzazione viene utilizzata per la serializzazione personalizzata in base alle esigenze dell'applicazione. L'esternalizzazione estende java.io.Serializable.
Numero | Chiave | Serializzazione | Esternizzazione |
---|---|---|---|
1 | Interfaccia | La serializzazione è un'interfaccia di etichetta | L'esternizzazione contiene due metodi readExternal e writeExternal. |
2 | Logica di implementazione | Le classi che implementano questo'interfaccia delegano la responsabilità di serializzazione o persistenza al JVM. Il JVM utilizza readObject e writeObject per la serializzazione | L'esternizzazione fornisce un controllo logico di implementazione all'applicazione tramite la sovrascrittura dei metodi readExternal e writeExternal. |
3 | Metodi per ignorare le variabili | Nel processo di serializzazione, il JVM ignora le variabili transient durante la serializzazione e la deserializzazione degli oggetti Java. | Il programmatore può scrivere la propria logica per ignorare alcune variabili durante il processo di esternizzazione di un oggetto Java. |
4 | Prestazioni | Nel'interfaccia serializzabile, l'uso della reflection può ridurre le prestazioni. | L'esternizzazione può controllare completamente il metodo di attuazione. |
5 | Serializzazione degli oggetti con ereditarietà | 1. Se la superclasse non è serializzabile, la sottoclasse può ancora essere serializzata. 2. Se la sottoclasse non è serializzabile ma la superclasse lo è automaticamente | Possiamo anche applicarlo all'esternizzazione. |
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; }