W klasie serializacji java Mp3player rozszerza urządzenia ElectronicDevice Serializable w tym kodzie super klasy electronicdevice nie jest zaimplementowany do serializacji. tutaj również super klasa jest seryjnie wysyłana. moje zrozumienie jest super klasy jest również serializowane z powodu rozszerzeń. opowiedz mi, że moje zrozumienie jest poprawne, czy nie.Serializacja Java dla rozszerzonej klasy
import java.io.*;
class ElectronicDevice {
ElectronicDevice()
{
System.out.print("ed ");
}
}
class Mp3player extends ElectronicDevice implements Serializable {
Mp3player()
{
System.out.print("mp ");
}
}
class MiniPlayer extends Mp3player {
MiniPlayer()
{
System.out.print("mini ");
}
public static void main(String[] args) {
MiniPlayer m = new MiniPlayer();
try {
FileOutputStream fos = new FileOutputStream("dev.txt");
ObjectOutputStream os = new ObjectOutputStream(fos);
os.writeObject(m); os.close();
FileInputStream fis = new FileInputStream("dev.txt");
ObjectInputStream is = new ObjectInputStream(fis);
MiniPlayer m2 = (MiniPlayer) is.readObject();
is.close();
System.out.println();
} catch (Exception x) {
System.out.print("x ");
}
}
}
Co to jest kod próbujący dokładnie pokazać? Czego nie rozumiesz w tym, co robi? –
Mechanizm serializacji java zajmuje się tylko instancjami klas implementujących 'Serializable', więc w twoim przypadku pola odziedziczone po' ElectronicDevice' (jeśli jakiekolwiek) nie będą domyślnie serializowane/deserializowane, zobacz [to] (http: // stackoverflow. com/a/7663590/594406) odpowiedź. – Katona
w powyższym kodzie electronicdevice nie jest zaimplementowanym serializowalnym interfejsem, ale w wyniku (po deserializacji) pojawia się również "ed". – rama