В классе сериализации Java Mp3player расширяет возможности ElectronicDevice. Сериализуемый в этом коде электронный класс суперкласса не реализуется сериализуемым. здесь суперкласс также становится сериализованным. мое понимание супер класс также сериализуется из-за extends.let мне известно, что мое понимание правильное или нет.Java-сериализация для расширенного класса
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 ");
}
}
}
Что такое код, который пытается точно показать? Что вы не понимаете в том, что он делает? –
Механизм сериализации java берет только экземпляры классов, реализующих 'Serializable', поэтому в вашем случае поля, унаследованные от' ElectronicDevice' (если есть), по умолчанию не будут сериализованы/десериализованы, см. [This] (http: // stackoverflow. com/a/7663590/594406) ответ. – Katona
в приведенном выше коде электронное устройство не реализовано сериализуемым интерфейсом, но в результате (после десериализации) в выход также входит «ed». – rama