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 versuche mich gerade mit dem Observer Pattern und soweit funktioniert alles ganz gut.
Nun hänge ich seit längerem an einer Stelle und komme nicht weiter. Und zwar möchte ich mit
Java:
notifyObservers(eigeneKlasse)
eine eigene Klasse an den Observer übergeben. Wie aber kriege ich die Klasse dann im Observer in die eigeneKlasse umgewandelt?
Java:
public void update (Observable o, Object arg){
arg.getWert1();
arg.getWert2();
}
Natürlich geht das so nicht, aber wie kriege ich nun aus dem Object meine Klasse extrahiert???
Ich caste damit das Object welches durch arg übergeben wird in meine eigeneKlasse. Dann müsste ich doch auch auf den Inhalt zugreifen können, oder wo liegt mein Gedankenfehler?
Ne,ne, ich bin zwar blutiger Anfänger, aber da muss ich dir frecher Weise widersprechen! Das stimmt so nicht! In dem Beispielfall muss man schon das "arg" casten. Die NullPointerException kam daher, dass ich (blöd wie ich bin) vergessen habe die "eigeneKlasse" zu initalisieren..... Jetzt läuft es!
Hier noch der Code, falls mal ein Anfänger ein ähnliches Problem hat.
EigeneKlasse
Java:
public class EigeneKlasse {
private String date;
private double lastQuote;
public EigeneKlasse(){
}
public String getDate() {
return date;
}
public void setDate(String date) {
this.date = date;
}
public double getLastQuote() {
return lastQuote;
}
public void setLastQuote(double lastQuote) {
this.lastQuote = lastQuote;
}
}
Observer
Java:
import java.util.Observable;
import java.util.Observer;
public class ObserverClass implements Observer{
public ObserverClass(){
}
@Override public void update( Observable o, Object arg )
{
EigeneKlasse ek = (EigeneKlasse)arg;
System.out.println(ek.getDate() + " " + ek.getLastQuote());
}
}
Observable
Java:
import java.util.Observable;
public class Updater extends Observable {
EigeneKlasse ek;
public Updater() {
ek = new EigeneKlasse(); // Hier war mein Fehler, der die
// NullPointerException auslöste ;)
}
public void update(String date, double lastQuote) {
ek.setDate(date);
ek.setLastQuote(lastQuote);
setChanged();
notifyObservers(ek);
}
}
TestApp (nur für den Aufruf)
Java:
import java.util.Observer;
public class App {
public static void main(String[] args) {
Observer observer = new ObserverClass();
Updater updater = new Updater();
updater.addObserver( observer );
updater.update("31.12.2010", 1000.5);
}
}
Vielen Dank an alle, die mir hier geholfen haben!!!!