Hallo,
ich möchte eine zweidimensionale ArrayList mit Strings als Inhalt über den ObjectOutputStream in einer Textdatei speichern. Meine Frage ist nun, ob ich die ArrayList wieder mit einem ObjectInputstream problemlos von jedem Computer der Welt einlesen kann. Ich meine, spielen dabei irgendwelche Codierungen oder Systemeinstellungen eine Rolle?
Es muss bloß eine zweidimensionale Arraylist auf dem "Computer der Welt" sein, die das ganze wieder aufnimmt.
Gegebenenfalls muss die SerialVersionUID angepasst werden.
Bin nicht hundertprozentig sicher, aber meiner Meinung nach nicht.
Ich übertrage selbst per ObjectOutputStream/ObjectInputStream Daten über Computergrenzen hinweg und hatte damit noch nie Probleme. Die Daten wurden zwischen Windows-, Linux- und z/OS Systemen ohne Probleme übertragen.
P.S.: Natürlich müßen die Java Klassen des Objects übereinstimmen.
Es muss bloß eine zweidimensionale Arraylist auf dem "Computer der Welt" sein, die das ganze wieder aufnimmt.
Gegebenenfalls muss die SerialVersionUID angepasst werden.
hier besser genau sein, die Liste ist doch mit in der Datei gespeichert, wird nicht neu gebraucht,
eine SerialVersionUID gibts auch nicht bei ArrayList und String, betrifft auch homer65 mit 'Java Klassen des Objects',
falls damit nicht die Java-Version an sich gemeint ist
hier besser genau sein, die Liste ist doch mit in der Datei gespeichert, wird nicht neu gebraucht,
eine SerialVersionUID gibts auch nicht bei ArrayList und String, betrifft auch homer65 mit 'Java Klassen des Objects',
falls damit nicht die Java-Version an sich gemeint ist
Bist du dir da ganz sicher ? Dann guck mal hier in den Source vom Oracle JDK x64 v7u5
Java:
publicfinalclassStringimplements java.io.Serializable,Comparable<String>,CharSequence//.../** use serialVersionUID from JDK 1.0.2 for interoperability */privatestaticfinallong serialVersionUID =-6849794470754667710L;
Demnach ist diene Aussage das es eine serialVersionUID sowohl in String als auch ArrayList nicht geben würde komplett falsch. Und genau darauf bezog sich die beiden Posts über dir das es halt wichtig ist das in beiden VMs die mit ein ander kommunizieren (bzw bei persistenter Datenspeicherung halt sowohl in der VM die schreibt als auch in der VM die liest) beide Klassen absolut identisch sind was anhand der serialVersionUID erkennbar ist. Unterscheidet sich diese gibt es nämlich eine Exception beim wieder einlesen.
Traurig das ein so "professioneller" User einen solchen Kardinalfehler begeht.
die Interpretation steht dir frei, vielleicht aber doch nicht ganz richtig
ich meinte natürlich, dass es mit API-Klassen keine SerialVersionUID-Anpassung wie genannt geben kann, darauf hat man offensichtlich keinen direkten Einfluss,
und dass auf die gleiche Java-Version zu achten ist habe ich ja erwähnt: "falls damit nicht die Java-Version an sich gemeint ist"
meine Formulierung mag nicht eindeutig gewesen sein, stimmt, sollte auf dem Level aber jedem klar sein der weiß worum es geht
edit: mein Spruch "hier besser genau sein" darf also gerne zurückgegeben werden