Hallo , ich bin Student und habe seit diesem Semester Objektorientiertes Programmieren mit Java.
Das Thema ist Serialisierung.
Wir haben ein Projekt, die anscheinend beliebte Bankaufgabe, und sollen zwei ArrayLists serialisieren und danach wieder deserialisieren.
Die eine funktioniert, die andere komischerweise nicht, obwohl ich den gleichen Code-Ablauf benutze.
Der einzige Unterschied ist, dass in der einen ArrayList Objekte einer Klasse zusammengefasst sind, in denen Hashmaps benutzt werden. Könnte da vielleicht das Prolem liegen?
Ich habe also eine Klasse Bank mit den Methoden backup und restore
ich versuche die ArrayList depots zu serialisieren, in depots sind Objekte der Klasse Depot, die folgendermaßen aussieht:
Ich bekomme eine Nullpointer-Exception wenn ich versuche auf ein Depot zuzugreifen:
Hat jemand vielleicht einen Tipp wo mein Fehler ist ?
MfG Kilian
Das Thema ist Serialisierung.
Wir haben ein Projekt, die anscheinend beliebte Bankaufgabe, und sollen zwei ArrayLists serialisieren und danach wieder deserialisieren.
Die eine funktioniert, die andere komischerweise nicht, obwohl ich den gleichen Code-Ablauf benutze.
Der einzige Unterschied ist, dass in der einen ArrayList Objekte einer Klasse zusammengefasst sind, in denen Hashmaps benutzt werden. Könnte da vielleicht das Prolem liegen?
Ich habe also eine Klasse Bank mit den Methoden backup und restore
Java:
public void backup(String filename) {
try {
FileOutputStream filestream = new FileOutputStream(filename);
ObjectOutputStream os = new ObjectOutputStream(filestream);
//os.writeObject(accounts);
os.writeObject(depots);
os.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public void restore(String filename) {
FileInputStream filestream;
try {
filestream = new FileInputStream(filename);
ObjectInputStream is = new ObjectInputStream(filestream);
//Object Obj1 = is.readObject();
Object Obj2 = is.readObject();
//accounts = (ArrayList<Account>) Obj1;
depots = (ArrayList<Depot>) Obj2;
is.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
ich versuche die ArrayList depots zu serialisieren, in depots sind Objekte der Klasse Depot, die folgendermaßen aussieht:
Java:
package bank_aufgabe;
import java.io.Serializable;
import java.util.HashMap;
public class Depot implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
private Account account;
private Customer owner;
private HashMap<Stock, Integer> stocksOwned;
public Depot(Account account) {
this.account = account;
this.owner = this.account.getOwner();
stocksOwned = new HashMap<Stock, Integer>();
}
public Customer getOwner() {
return owner;
}
public void buy(Stock stock, int amount) {
if (amount * stock.getValue() < account.getBalance()) {
account.withdraw("new stock", amount * stock.getValue());
if (stocksOwned.containsKey(stock)) {
stocksOwned.put(stock, (amount + stocksOwned.get(stock)));
} else {
stocksOwned.put(stock, amount);
}
} else {
throw new BankException("Nicht genug Guthaben!", account.getOwner());
}
}
public void sell(Stock stock, int amount) {
if (stocksOwned.containsKey(stock) == true) {
if (amount > stocksOwned.get(stock)) {
account.deposit(stock.toString() + "verkauft", stock.getValue()
* stocksOwned.get(stock));
stocksOwned.remove(stock);
} else {
account.deposit(stock.toString() + "verkauft", stock.getValue()
* amount);
stocksOwned.put(stock, (stocksOwned.get(stock)) - amount);
}
} else {
throw new BankException(String.format("Aktie ist nicht im Depot: %s",
stock.getName()), account.getOwner());
}
}
public String toString(){
//TODO was cooles ausdenken, ich hab mich da verrant -.-
return "hallo";
}
}
Ich bekomme eine Nullpointer-Exception wenn ich versuche auf ein Depot zuzugreifen:
Java:
System.out.println(myBank.getDepot(1).toString());
Hat jemand vielleicht einen Tipp wo mein Fehler ist ?
MfG Kilian
Zuletzt bearbeitet: