Trong lớp tuần tự hóa java Mp3player mở rộng ElectronicDevice thực hiện Serializable trong mã điện tử siêu hạng này không được triển khai tuần tự. ở đây lớp siêu cũng được sắp xếp theo thứ tự. sự hiểu biết của tôi là siêu lớp cũng được serialized do extends.let tôi biết sự hiểu biết của tôi là chính xác hay không.Tuần tự hóa Java cho Lớp mở rộng
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 ");
}
}
}
Mã cố gắng hiển thị chính xác là gì? Bạn không hiểu điều gì? –
java serialization cơ chế chỉ chăm sóc trường hợp của các lớp thực hiện 'Serializable', vì vậy trong trường hợp của bạn, các trường thừa kế từ' ElectronicDevice' (nếu có) sẽ không được tuần tự hóa/deserialized theo mặc định, xem [this] (http: // stackoverflow. com/a/7663590/594406) trả lời. – Katona
trong mã trên điện tử không được thực hiện giao diện serializable nhưng trong kết quả (sau khi deserialize) "ed" cũng đến trong đầu ra. – rama