Serialisierung

Steve222

Mitglied
Hallo allerseits,

die folgende Frage zum Codebeispiel habe ich aus einem Tutor-
System (Lehrsystem).
Die Antwort, die hierfür bezüglich Ausgabe gegeben wird,
deckt sich nicht mit meiner praktischen Nachprüfung.

Java:
Was wird hier ausgegeben?

public class Serial 
{
    public static void main(String... args) throws Exception
    {
        NumberFormat format = NumberFormat.getInstance(Locale.ITALY);
        String x = format.format(12.2);
        ObjectOutputStream stream = new ObjectOutputStream(new FileOutputStream(new File("test")));
        stream.writeObject(x);
        stream.writeInt(new Integer(10));
        stream.writeInt(-12);
        stream.flush();
        stream.close();
        ObjectInputStream inputStream = new ObjectInputStream(new FileInputStream(new File("test")));
        System.out.println(inputStream.readObject());
        System.out.println(inputStream.readObject());
        System.out.println(inputStream.readObject());
    }    
}

Was meinst Du, was dieser Code ausgibt?

Viele Grüße
Steve222
 
Zuletzt bearbeitet von einem Moderator:
Hallo,

da meines Wissens nach in einer Datei nur ein Object stehen kann, gibt er nur das erste geschriebene Objekt aus. Also etwas wie "12,2" (je nachdem wie die Italiener die Zahlen darstellen). Danach wirft er in Zeile 17 eine Exception (irgendeine IOException, weiß nicht mehr welche) und er dürfte das Programm abbrechen.

Gruß
BK
 
Ich denke die Ausgabe müsste
lauten.

Ich teste es mal...

Edit: Also weder ich noch Bratkartoffel waren 100% richtig.
Es können natürlich beliebig viele Objekte in einer Datei stehen, aber es wird eine Exception geworfen, weil er den primitiven Datentyp nicht als Object deserialisieren kann. Wenn es am Ende zwei mal "readInt()" heißt, funktioniert es und die Ausgabe ist so, wie ich es vermutet hatte.

Gott sei dank hab ich beide Java Vorlesungen bestanden :-D
 
Zuletzt bearbeitet:
Hallo BK,

und Danke nochmals.
Nach meinem Test ist es sowie Du es darstellst. Genau ist es eine java.io_OptionalDataException.
Das ist jeoch KEINE RuntimeException so wie es vom Lehrsystem behautet wird:

java.lang.Object
extended by java.lang.Throwable
extended by java.lang.Exception
extended by java.io.IOException
extended by java.io_ObjectStreamException
extended by java.io_OptionalDataException

Was also ist da los.
Wer liegt hier verkehrt?

Viele Grüße
Steve222
 

Neue Beiträge

Zurück