1

クラスOsoba(Person)とZawodnik(Constestant)があります

Contestantを拡張PersonしてPerson実装しSerializableます。Constestantも自動的に実装されSerializableますか? そう思います。

classの extension( ArrayList ekstensja) には、 class を拡張Personするさまざまなクラスのオブジェクトが含まれていますPerson。クラスのメソッドzapiszEkstensje()Person正しく機能しますか? そう思います。

例:

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?
4

1 に答える 1

1

Serializableインターフェイスの Java doc によると、シリアライズ可能なクラスのすべてのサブタイプは、それ自体がシリアライズ可能です。

したがって、すべての子がシリアライズ可能になるPerson場合、答えはイエスです。Serializable

于 2013-03-20T18:13:33.267 に答える