Wollen wir mal etwas auf den TE eingehen statt in einer Diskussion abzudriften, die dem TE nicht weiter hilft.
@mrBrown evtl. die Diskussion um die id Absplitten. Dann kann Tobias erläutern, wieso er meint, dass die nicht gesetzt werden darf oder auf bestimmte Werte gesetzt werden muss oder warum Deine Aussagen falsch sein sollen ...
Serializeable / serialVersionUID
(Erläuterung - dient dem speichern/laden eigener Klassen!
Dürfte für eure Aufgabe uninteressant sein - ebenso wie die Diskussion um serialVersionUID ... Das musst Du (noch) nicht kennen. Und ob das überhaupt behandelt werden wird ist offen ...)
ich weiß leider nicht, was du meinst und was Serializable ist
Serializeable ist erst einmal nur ein Interface:
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/io/Serializable.html
Diese spielt bei der Objekt oder Binary Serialisierung eine Rolle und kennzeichnet erst einmal Klassen, die serialisiert werden können.
https://www.baeldung.com/java-serialization gibt (auf Englisch) diesbezüglich eine kleine Übersicht (wie viele andere Seiten im Internet auch.)
Diese Binary Serialisierung hat aber gewisse "Probleme". Ein Problem ist, dass die Klasse selbst nicht gespeichert wird sondern nur Angaben zu der Klasse. Diese sind aber nicht eindeutig:
a) Weniger problematisch: Es kann eine Klasse mehrfach geben. Da aber in der Regel Namespaces verwendet werden, ist hier das Problem erst einmal nicht wirklich vorhanden.
b) Eine Klasse wird mit der Zeit verändert. Felder verändern sich (Du machst auf Date ein LocalDate, aus int ein double oder was weiss ich), Felder kommen hinzu oder entfallen. Ich habe mir die Details der Speicherung nicht angesehen: ggf. kann die Reihenfolge auch wichtig sein! Wenn solch eine Veränderung eingetreten ist, dann wird die Binary Darstellung ungültig.
Es wird z.B. ein Date gelesen, aber das kann nicht in ein LocalDate gespeichert werden.
Daher haben Klassen noch eine interne Versionierung. Dies ist einfach eine statische long Variable serialVersionUID - und diese kann man setzen.
Wenn man diese gesetzt hat, dann ist sicher gestellt: Wenn Du Code mehrfach übersetzt, dann lädt er die Binary Version. Aber wenn nun eine Änderung dafür sorgt, dass die Binary-Darstellung nicht mehr stimmig ist, dann verändert man diese Version. Dadurch wird verhindert, dass beim Laden keine dubiosen Effekte auftreten
XML und JSON
(Ebenfalls uninteressant! Das wird hier in der Aufgabe wohl eher nicht verlangt!)
Generell ist es aber auch schon so, wie es
@Barista in #9 am Ende geschrieben hat: Man kann statt der Binary Form auch andere Darstellungen wählen. JSON und XML kommen da in Frage. Und da gibt es sehr leistungsfähige Libraries, die dies sehr einfach machen.
Eure Aufgabe
Bei der euch gestellten Aufgabe dürfte es so sein, dass ihr aber auf diese Binary Serialization setzen sollt. Denn damit habt ihr ja schon erfolgreich erste Werte geschrieben. Ihr seid also in der Lage, die üblichen Werte zu schreiben.
Und ihr könnte beliebige Werte nacheinander schreiben ... beim Lesen müsst ihr diese nur in der richtigen Reihenfolge lesen.
Bei einem Array wäre also nur zu überlegen: Was habt da denn? Und was brauchst du, um es zu erstellen?
Für das Array brauchst Du:
a) die Größe - ohne die Größe kannst Du es nicht erstellen
b) die Werte des Arrays.
Daher vermute ich, dass ihr zu einer Lösung kommen solltet, in der ihr beim Speichern:
- die Größe des zu speichernden Arrays (int Wert) speichern sollt
- dann über das Array gehen und alle Werte speichern.
Das Laden läuft ebenso:
- Erst wird die Größe geladen. Damit kannst Du dann das neue Array erstellen
- Dann gehst Du durch und lädst in jedes Element des Arrays den Wert.
==> Damit bleibst Du bei dem bekannten Wissen und wendest dies nur an.