Deserialisieren auf sich selbst

Status
Nicht offen für weitere Antworten.

sTaX

Mitglied
Hi,
ich habe eine Config-Klasse wo verschiedene Daten z.B. mysql-Datenbank usw. gespeichert sind.

Die Klasse besitzt eine Methode (save) welche sich selbst in eine Datei serialisiert.
Das funktioniert auch gut. Jedoch funktioniert das Laden (deserialisieren) nicht so wie ich möchte.

Ich habe dazu eine weitere Methode (load) geschrieben. Dort lese ich das Object ein und speicher es in einem objekt welches auf "this" verweist. Jedoch klappt es nur so halb.

Hier meine Config.java:
Ganz unten sind die Methoden zum (de)serialisieren.
Beim beim laden gibt er mir "nichts" aus.
Java:
package util;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;

public class Config implements Serializable  {
	private static final long serialVersionUID = 1L;
	public String mysqlHost = "";
	public String mysqlUser = "";
	public String mysqlPassword = "";
	public String mysqlDatabase = "";
	public String ftpHost = "";
	public String ftpUser = "";
	public String ftpPassword = "";
	public static final String configFilename = System.getProperty("user.home")+"/config.conf";
	
	public String getMysqlHost() {
		return mysqlHost;
	}
	public void setMysqlHost(String mysqlHost) {
		this.mysqlHost = mysqlHost;
	}
	public String getMysqlUser() {
		return mysqlUser;
	}
	public void setMysqlUser(String mysqlUser) {
		this.mysqlUser = mysqlUser;
	}
	public String getMysqlPassword() {
		return mysqlPassword;
	}
	public void setMysqlPassword(String mysqlPassword) {
		this.mysqlPassword = mysqlPassword;
	}
	public String getMysqlDatabase() {
		return mysqlDatabase;
	}
	public void setMysqlDatabase(String mysqlDatabase) {
		this.mysqlDatabase = mysqlDatabase;
	}
	public String getFtpHost() {
		return ftpHost;
	}
	public void setFtpHost(String ftpHost) {
		this.ftpHost = ftpHost;
	}
	public String getFtpUser() {
		return ftpUser;
	}
	public void setFtpUser(String ftpUser) {
		this.ftpUser = ftpUser;
	}
	public String getFtpPassword() {
		return ftpPassword;
	}
	public void setFtpPassword(String ftpPassword) {
		this.ftpPassword = ftpPassword;
	}
	/**
	 * Speichert die Konfiguration in einer Datei
	 */
	public void save() {
		ObjectOutputStream oos;
		try {
			oos = new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream(configFilename)));
			oos.writeObject(this);
			oos.flush();
			oos.close();	
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

	}
	
	public void load() {
		Config conf = this;
		ObjectInputStream objIn;
		try {
			objIn = new ObjectInputStream(new BufferedInputStream(new FileInputStream(configFilename)));
			conf = (Config) objIn.readObject( );
			objIn.close();
			System.out.println("mysqlHost:"+getMysqlHost());
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}

	}
	
	
}

Wenn ich die load-Methode so verändere gibt er mir das richtige aus:
Java:
public void load() {
		Config conf = this;
		ObjectInputStream objIn;
		try {
			objIn = new ObjectInputStream(new BufferedInputStream(new FileInputStream(configFilename)));
			conf = (Config) objIn.readObject( );
			objIn.close();
			this.setMysqlHost(conf.getMysqlHost());
			System.out.println("mysqlHost:"+getMysqlHost());
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}

	}
Ist da irgendwo ein (Denk)-Fehler von mir drin. Oder geht es einfach nicht?
 
S

SlaterB

Gast
nun ja, das obige ist falsch und das untere korrekt,
was kann man mehr sagen?

beim obigen lädst du ein conf-Objekt, aber das ist ein anderes als das eigene,
ein Objekt verändert nicht gleichzeitig alle andere derselben Klasse


ach, lass bloß nicht all die getter und setter manche hier im Forum sehen ;)
 
S

Spacerat

Gast
ach, lass bloß nicht all die getter und setter manche hier im Forum sehen ;)
...äh, genau! Verbesser die Modifier der Instanzvariablen besser gleich in "private" :)
Ausserdem würde ich das Serialisieren bei derartigen Klassen ruhig selber implementieren. Das bedeutet:
Java:
private void read(ObjectInputStream in)
throws ClassNotFoundException, IOException
{
  mysqlHost = in.readUTF();
  mysqlUser = in.readUTF();
  mysqlPassword = in.readUTF();
  mysqlDatabase = in.readUTF();
  ftpHost = in.readUTF();
  ftpUser = in.readUTF();
  ftpPassword = in.readUTF();
}

private void write(ObjectOutputStream out)
throws IOException
{
  out.writeUTF(mysqlHost);
  out.writeUTF(mysqlUser);
  out.writeUTF(mysqlPassword);
  out.writeUTF(mysqlDatabase);
  out.writeUTF(ftpHost);
  out.writeUTF(ftpUser);
  out.writeUTF(ftpPassword);
}

public boolean save()
{
  try {
    ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(configFilename));
//  write(new ObjectOutputStream(new FileOutputStream(configFilename))); SO NICHT!!!
    write(out);
    out.close();
    return true;
  } catch(IOException e) {
    // vllt. noch enforced close noetig
    return false;
  }

public boolean load()
{
  try {
    ObjectInputStream in = new ObjectInputStream(new FileInputStream(configFilename));
    read(in);
    in.close();
    return true;
  } catch(IOException e) {
    // vllt. noch enforced close noetig
    return false;
  }
}
 
Zuletzt bearbeitet von einem Moderator:
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
F Kann JSON nicht deserialisieren Java Basics - Anfänger-Themen 0
H Interface Objekte speichern und laden (serialisieren/deserialisieren) Java Basics - Anfänger-Themen 1
kaoZ Input/Output Android : Deserialisieren von mehreren Objekten in einer Datei Java Basics - Anfänger-Themen 0
O Objekt Listen serialisierung und deserialisieren Java Basics - Anfänger-Themen 5
F Input/Output Serialisieren/Deserialisieren Java Basics - Anfänger-Themen 18
P Serialisieren-deserialisieren Java Basics - Anfänger-Themen 18
D Serialisieren/deserialisieren Java Basics - Anfänger-Themen 37
H Datentypen Serialization... deserialisieren? Java Basics - Anfänger-Themen 4
R Objecte Serialisieren / Deserialisieren Java Basics - Anfänger-Themen 2
V Objekt serialisieren/Deserialisieren und per get verschicken Java Basics - Anfänger-Themen 5
J Serialisierung - Array-Objekt serialisieren/deserialisieren Java Basics - Anfänger-Themen 6
S Deserialisieren: alle Objekte ausgeben - wie mache ich das? Java Basics - Anfänger-Themen 2
G Problem beim Deserialisieren Java Basics - Anfänger-Themen 6
G Deserialisieren einer ArrayList Java Basics - Anfänger-Themen 2
R Abbruchbedingung readObject (deserialisieren) Java Basics - Anfänger-Themen 31
N Klassen Hintergrundfarbe in JPanel ändert sich nicht Java Basics - Anfänger-Themen 3
KogoroMori21 Wann ist der richtige Zeitpunkt, um sich Hilfe zu suchen? (Bin Informatik-Student) Java Basics - Anfänger-Themen 10
N Hey Leute und zwar versuche ich gerade ein 2D Spiel zu Programmieren aber die Figur will sich nicht nach links oder rechts bewegen :( Java Basics - Anfänger-Themen 12
T code so schreiben das er von sich selber anpasst (code soll die anzahl aller bustaben bestimmen) Java Basics - Anfänger-Themen 16
P Probleme mit NetBeans: Wie lässt sich jar. Datei an einem MacBook öffnen Java Basics - Anfänger-Themen 21
G Variable aktualisiert sich nicht in rekursiver Methode Java Basics - Anfänger-Themen 4
F abbruch Exception lässt sich nicht erstellen Java Basics - Anfänger-Themen 2
G jar file lässt sich nicht öffnen Java Basics - Anfänger-Themen 1
xaerez Threads Boolean Wert verändert sich nicht Java Basics - Anfänger-Themen 5
xaerez Threads Boolean Wert verändert sich nicht Java Basics - Anfänger-Themen 4
berserkerdq2 Spiel hängt sich immer in der 4 Runde auf, obwohl ich jede Runde das gleiche mache Java Basics - Anfänger-Themen 1
GoenntHack Java Text von JLabel verändert sich nicht Java Basics - Anfänger-Themen 1
E multiple Timer die sich nicht summieren Java Basics - Anfänger-Themen 12
J Mein Java Programm lässt sich nicht mehr bearbeiten Java Basics - Anfänger-Themen 2
A Konsolenausgabe verschiebt sich Java Basics - Anfänger-Themen 8
M Wie lassen sich Konstanten in Bedingung stellen? Java Basics - Anfänger-Themen 1
M Wie lassen sich Objektkonstanten initialisieren, wenn sie eine Bedingung erreichen? Java Basics - Anfänger-Themen 6
P Mein Programm wird zwar erfolgreich Compiliert, öffnet sich aber nicht Java Basics - Anfänger-Themen 6
I Probleme mit OutputStream - Datei lässt sich nicht öffnen Java Basics - Anfänger-Themen 4
B Programm beendet sich nicht und weiteres seltsames Verhalten Java Basics - Anfänger-Themen 9
Nina Pohl Ein Vorgang bezog sich auf ein Objekt, das kein Socket ist Java Basics - Anfänger-Themen 6
H 36 Zufallszahlen die sich nicht wiederholen Java Basics - Anfänger-Themen 27
E Warum lässt sich eine Klasse nicht starten, wenn eine andere Klasse in dem Modul fehlerhaft ist? Java Basics - Anfänger-Themen 1
IamArctic Quaxli Tutorial, Rotorblätter bewegen sich nicht mehr Java Basics - Anfänger-Themen 4
M Java GUI label ändert sich erst zum Schluss Java Basics - Anfänger-Themen 4
H Liste speichern. Was lässt sich verbessern? Java Basics - Anfänger-Themen 7
X Kurzes Java-Programm, das sich komisch verhält Java Basics - Anfänger-Themen 6
J CMD schließt sich automatisch Java Basics - Anfänger-Themen 5
S Was für Aufgaben könnten sich hier hinter verbergen? Java Basics - Anfänger-Themen 5
M Wie kann ich ein Objekt erstellen, wenn sich der Klassenname in einer Variablen befindet? Java Basics - Anfänger-Themen 10
F boolean stellt sich auf true Java Basics - Anfänger-Themen 15
H Datentypen Was für eine Format verbirgt sich hinter dem Integer-Wert 053? Java Basics - Anfänger-Themen 2
A Haben KNNs ein Gedächtnis, lernen etwas oder verändern sich, während sie nicht trainieren, aber aktiv sind? Java Basics - Anfänger-Themen 3
M Werte ändern sich nicht mehr nach Reset Java Basics - Anfänger-Themen 14
H Punkt bewegt sich auf einer Ellipse Java Basics - Anfänger-Themen 6
X Erste Schritte boolean wert ändert sich nicht? Java Basics - Anfänger-Themen 6
I Klassen Eine ArrayList<Long>, die sich automatisch sortiert Java Basics - Anfänger-Themen 20
Franzi1001 ScrollBar lässt sich nicht bewegen Java Basics - Anfänger-Themen 4
W Client verbindet sich nicht Java Basics - Anfänger-Themen 14
J Mein Programm beendet sich ohne mein Zutun Java Basics - Anfänger-Themen 9
J Zwei Klassen die sich gegenseitig referenzieren - Bad practice? Java Basics - Anfänger-Themen 4
N Bewegtes Objekt soll sich um eine Parallele bewegen Java Basics - Anfänger-Themen 0
K Zufalsszahl soll sich nicht wiederholen Java Basics - Anfänger-Themen 9
C Classpath Compiler lässt sich nur bedingt von Kommandozeile aus starten Java Basics - Anfänger-Themen 17
CptK Datentypen Objekt lässt sich nicht zu arraylist hinzufügen Java Basics - Anfänger-Themen 2
L Mein Taschenrechner lässt sich plötzlich nicht mehr öffnen Java Basics - Anfänger-Themen 5
CptK Interface JLabel bewegt sich nicht sondern teleportiert sich... Java Basics - Anfänger-Themen 3
P jar file lässt sich nicht ausführen Java Basics - Anfänger-Themen 4
L Programm lässt sich nicht starten! Java Basics - Anfänger-Themen 1
pkm Interface Funktionales Interface lässt sich nicht implementieren. Java Basics - Anfänger-Themen 2
Hanschyo Programm schließt sich einfach Java Basics - Anfänger-Themen 2
L Panel verkleinert sich unerklärlicherweise Java Basics - Anfänger-Themen 7
J JFrame Fenster öffnet sich nicht Java Basics - Anfänger-Themen 7
x-tshainge Mein Programm lässt sich nicht Starten Java Basics - Anfänger-Themen 8
S Nach dem Herüberschieben eines Arrays zwischen 2 Frames öffnet sich das Frame nicht mehr Java Basics - Anfänger-Themen 12
B Java -Turtle Grafik - kennt sich jemand damit aus? Java Basics - Anfänger-Themen 1
K Sysout wiederholt sich Java Basics - Anfänger-Themen 6
H Wieso öffnet sich der Texteditor? Java Basics - Anfänger-Themen 6
B Classpath Class lässt sich nicht öffnen Java Basics - Anfänger-Themen 3
J Java-Dateien lassen sich nicht editieren Java Basics - Anfänger-Themen 46
T Schleife fährt sich fest Java Basics - Anfänger-Themen 14
E App lässt sich nicht starten Java Basics - Anfänger-Themen 8
ZotacZ Best Practice Lohnt es sich in GWT einzuarbeiten? Java Basics - Anfänger-Themen 4
E Pdf-Document lässt sich im Servlet nicht öffnen Java Basics - Anfänger-Themen 5
G KeyListener und JButton vertragen sich nicht Java Basics - Anfänger-Themen 1
S String ändert sich nicht Java Basics - Anfänger-Themen 2
Bregedur Methoden Matcher und Pattern bei sich wiederholenden Werten Java Basics - Anfänger-Themen 1
P Compiler-Fehler Wo befindet sich hier der Fehler und warum? Java Basics - Anfänger-Themen 21
F MouseMotionListener - Objekt bewegt sich nicht Java Basics - Anfänger-Themen 1
S Erste Schritte Java Applet lässt sich im Browser nicht öffnen Java Basics - Anfänger-Themen 9
G Was hat es mit java.net.* auf sich? Java Basics - Anfänger-Themen 10
X Streams und Ausgabe - lässt sich das einfacher schreiben oder schöner schreiben? Java Basics - Anfänger-Themen 5
J Kann eine .jar sich selber Löschen? Java Basics - Anfänger-Themen 5
OlafHD Java Uhrzeit aktualisiert sich nicht Java Basics - Anfänger-Themen 2
J Java Datei lässt sich nicht kompilieren Java Basics - Anfänger-Themen 3
J Reihenfolge im Vector lässt sich nicht drehen Java Basics - Anfänger-Themen 9
J Wie lässt sich der Konstruktor einer Klasse einer Funktion einer Klasse nutzen. Java Basics - Anfänger-Themen 4
W OOP Zwei Objekte beziehen sich aufeinander (Zirkelbezug)? Java Basics - Anfänger-Themen 4
cezary Server läßt sich nicht starten Java Basics - Anfänger-Themen 2
X wie kann ich in bluej/java einene 2d array mit zahlen fuellen, so dass sich diese in der der zeilen Java Basics - Anfänger-Themen 2
S Variable (int) erhöht sich nicht richtig Java Basics - Anfänger-Themen 18
B Konsole schließt sich sofort Java Basics - Anfänger-Themen 8
Fishmeaker Methoden mit Methoden aufrufen - Programm hängt sich auf Java Basics - Anfänger-Themen 5
F Inhalt einer Variable auswerten, die sich immer wieder ändert Java Basics - Anfänger-Themen 1
T Methoden [GELÖST ]Warum ruft sich die Methode von alleine auf? Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben