我有类(class)Osoba
(人)和Zawodnik
(Constestant)
Contestant
扩展 Person
且 Person
实现 Serialized
。 Constestant
也自动实现 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/