java - 多态对象的序列化

标签 java serialization

我有类(class)Osoba(人)和Zawodnik(Constestant)

Contestant 扩展 PersonPerson 实现 SerializedConstestant 也自动实现 Serialized 吗?我想是的。

Person 类的扩展 (ArrayList ekstensja) 包含扩展类 Person 的不同类的对象。 Person 类中的方法 zapiszEkstensje() 能否正常工作?我想是的。

示例:

public abstract class Osoba implements Serializable {
/....something..../

    private static ArrayList<Osoba> ekstensja = new ArrayList<Osoba>();

    private void dodajZawodnik(Osoba osoba) {
        ekstensja.add(osoba);
    }

    private void usunZawodnik(Osoba osoba) {
        ekstensja.remove(osoba);
    }

    public static void pokazEkstensje() {
        for (Osoba zawodnik : ekstensja)
            System.out.println(zawodnik + "\n");

    }

    public static void zapiszEkstensje() {
        try {
            ObjectOutputStream outputStream = new ObjectOutputStream(new FileOutputStream("osoba.ser"));                                                
            outputStream.writeObject(ekstensja); 
            outputStream.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @SuppressWarnings("unchecked")
    public static void wczytajEkstensje(){
        try {
            ObjectInputStream inputStream = new ObjectInputStream(new FileInputStream("osoba.ser"));                                                
            ekstensja = (ArrayList<Osoba>) (inputStream.readObject()); 
            inputStream.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    } 
}
<小时/>
public class Zawodnik extends Osoba  {  }
// DO I NEED TO MAKE THIS CLASS IMPLEMENT SERIALIZABLE TOO?

最佳答案

根据Serializable的java文档接口(interface),可序列化类的所有子类型本身都是可序列化的。

所以,答案是肯定的,如果 Person 实现 Serializable,它的所有子项都将是可序列化的。

关于java - 多态对象的序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15531333/

相关文章:

java - 替换字符并仅保留其中一个字符

java - 根据内部元素的大小设置面板大小?

java - 工具栏中的图标不出现

java - 序列化后使用 equals()

java - 我的程序覆盖了它正在写入的文件,但它不应该

java - Java 中的 Akka Cluster 使用 Java Mail API 进行 IMAP 获取

java - 是否有一些对象或数据类型可以被 Java 自动序列化(无需实现 Serialized)?

symfony - 使用fos:elastica:populate时检测到循环引用

java - 抽象异常类中的串行版本 uid

python - 如何在 Python 中序列化 scandir.DirEntry 以通过网络套接字发送?