Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ich habe an der Uni angefangen Java zu lernen und wollte als Übung ein Tippspiel für die EM schreiben.
Da ich nun Objekte speichern möchte, da man das Tippspiel ja über eine längere Zeit verwaltet, habe ich über Serialize gelesen und eine Klasse Serialize geschrieben, die ich zu Speichern und Laden aufrufen möchte.
Hier einmal der Code dieser Klasse:
Java:
import java.io.*;
import java.util.*;
public class Serialize
{
// Serialize - der Dateiname und ein Objekt vom Typ Benutzer werden übergeben
static void serialize(String filename, Benutzer einBenutzer )
{
try
{
FileOutputStream file = new FileOutputStream( filename );
ObjectOutputStream o = new ObjectOutputStream( file );
o.writeObject (einBenutzer);
o.close();
}
catch ( IOException e ) { System.err.println( e ); }
}
// Bekommt den Filename und soll das Objekt Benutzer1, welches geladen wurde, zurückgeben
public Benutzer deserialize( String filename )
{
try
{
FileInputStream file = new FileInputStream( filename );
ObjectInputStream o = new ObjectInputStream( file );
Benutzer Benutzer1 = (Benutzer) o.readObject();
o.close();
String name1 = Benutzer1.getBenutzer();
System.out.println( name1 );
}
catch ( IOException e ) { System.err.println( e ); }
catch ( ClassNotFoundException e ) { System.err.println( e ); }
// hier scheint der Fehler zu liegen?!
return Benutzer1;
}
}
Der Fehler sieht wie folgt aus:
Code:
Compiliere C:\Users\xyz\Desktop\Fussball_Tippspiel\Oberflaeche.java mit Java-Compiler
.\Serialize.java:31:12: error: cannot find symbol
return Benutzer1;
^
symbol: variable Benutzer1
location: class Serialize
1 error
Ich rufe die deserialize Methode in der Mainklasse über
Code:
Benutzer1 = SeDeserialize.deserialize(Dateiname);
auf.
Könnte mir vielleicht jemand helfen und beantwoten, wieso das Objekt Benutzer1 nicht über das return Statement zurückgegeben werden kann?!
die Variable vor dem try/catch deklarieren, im try/catch etwas zuweisen -> nach try/catch noch sichtbar
(evtl. Gemecker 'Variable nicht initialisiert' -> null als Startwert)
alternativ das return in das try/catch reinziehen, bei Exception willst du sicherlich sowieso nicht diese Variable zurückgegeben,
ein return muss am Ende aber auf jeden Fall stehen, return null z.B.,
oder eine Exception werfen