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