Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 多态对象的序列化_Java_Serialization - Fatal编程技术网

Java 多态对象的序列化

Java 多态对象的序列化,java,serialization,Java,Serialization,我有两门课,分别是:奥索巴(Person)和扎沃德尼克(Constestant) competitor扩展Person和Person实现Serializable。Constestant是否也自动实现了Serializable?我想是的 类Person的扩展(ArrayList ekstensja)包含扩展类Person的不同类的对象。Person类中的方法zapiszEkstensje()是否正常工作?我想是的 例如: public abstract class Osoba implements

我有两门课,分别是:奥索巴(Person)和扎沃德尼克(Constestant)

competitor
扩展
Person
Person
实现
Serializable
Constestant
是否也自动实现了
Serializable
?我想是的

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();
        }
    } 
}
根据接口的Javadoc,可序列化类的所有子类型本身都是可序列化的

因此,答案是肯定的,如果
Person
实现了
Serializable
,那么它的所有子类都是可序列化的。

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

因此,答案是肯定的,如果
Person
实现了
Serializable
,那么它的所有子项都将是可序列化的

public class Zawodnik extends Osoba  {  }
// DO I NEED TO MAKE THIS CLASS IMPLEMENT SERIALIZABLE TOO?