Observable/Observer update wird nicht ausgeführt

Status
Nicht offen für weitere Antworten.
G

Geleidon

Gast
Hallo,
ich habe gerade etwas mit Oberserver rumexperimentiert. Doch leider funktioniert das nicht so ganz wie ich es mir vorstelle. Hier der Code:
Code:
public class Test implements java.util.Observer{
    
    public static void main(String[] args) {
        Test t = new Test();
        java.util.Observable observable = new java.util.Observable();
        observable.addObserver(t);
        observable.notifyObservers("Hello Observer");
    }
    
    public void update(java.util.Observable o, Object arg) {
        System.out.println(arg);            
    }
    
}

Beim debugging habe ich festgestellt, dass das observable Objekt den Zustand changed=false hat. Setze ich den im Debugger auf true erscheint die Ausgabe.
Das ist doch bestimmt nur ne Kleinigkeit, oder?!

Geleidon
 
B

bygones

Gast
kurzer Blick in die Api :wink: setChanged(); einfach aufrufen ! (im observable objekt)
 
B

bygones

Gast
Illuvatar hat gesagt.:
Die API sagt aber:
protected void setChanged
Ja und.... ?!
Code:
public class Irgendwas extends Observable {
  .....
  public void tuwas() {
    // tu was
    setChanged(); // es hat sich was geändert;
    notifObserver(); // nachricht an Observer....
 }
}
 
G

Geleidon

Gast
Ja danke erstmal. Ich werds dann wohl so lösen:
Code:
public class Test implements java.util.Observer{
    
    public static void main(String[] args) {
        Test t = new Test();
        java.util.Observable observable = new java.util.Observable() {
            public void notifyObservers(Object o) {
                setChanged();
                super.notifyObservers(o);
            }
        };
        observable.addObserver(t);
        observable.notifyObservers("Dies ist ein Testobjekt");
    }
    
    public void update(java.util.Observable o, Object arg) {
        System.out.println(arg);            
    }
    
}
Aber wieso muss man denn immer diesen setChanged setzen? Hat das überhaupt irgendeinen Sinn?
 

Illuvatar

Top Contributor
Natürlich geht das so.
Man muss aber eine eigene Klasse schreiben, was Geleidon ja nicht gemacht hat.

@Geleidon: Du musst eine eigene Klasse ableiten, wie in dem Beisoiel von deathbyaclown, auch ein Blick in den Sourcecode der Klasse Observer bestätigt das.

Edit: Genau, so müsste es gehen. Einen Sinn sehe ich auch nicht.
 
B

bygones

Gast
Geleidon hat gesagt.:
Aber wieso muss man denn immer diesen setChanged setzen? Hat das überhaupt irgendeinen Sinn?
Du musst das Objekt als geändert markieren - woher soll es sonst wissen, das was passiert ist ?!
notifyObservers wird nur ausgeführt, wenn die Variable changed den wert true hat !
 

Grizzly

Top Contributor
Geleidon hat gesagt.:
Ja danke erstmal. Ich werds dann wohl so lösen:
Code:
public class Test implements java.util.Observer{
    
    public static void main(String[] args) {
        Test t = new Test();
        java.util.Observable observable = new java.util.Observable() {
            public void notifyObservers(Object o) {
                setChanged();
                super.notifyObservers(o);
            }
        };
        observable.addObserver(t);
        observable.notifyObservers("Dies ist ein Testobjekt");
    }
    
    public void update(java.util.Observable o, Object arg) {
        System.out.println(arg);            
    }
    
}
Aber wieso muss man denn immer diesen setChanged setzen? Hat das überhaupt irgendeinen Sinn?

Wenn mir die Gegenfrage gestattet ist: Macht das, was Du da machst, überhaupt Sinn?
Wie Illuvatar schon richtig bemerkt hat, erstellt man normalerweise eine von Observable abgeleitete Klasse. Und diese kann dann ja auch die Methode protected void setChanged() aufrufen.
So wie Dein Code momentan aussieht, könntest Du ja auch die Methode einfach direkt aufrufen. Später wird sich ja der Code dann ja wahrscheinlich in zwei unterschiedlichen Klassen sprich Java-Dateien befinden. Die Methode public void notifyObservers() bzw. public void notifyObservers(Object arg) wird von der abgeleiteten Klasse selber aufgerufen und nicht von einer anderen Klasse.

Du solltest Dir vielleicht mal das Observer-Obserable Design Pattern genauer anschauen - wie das gemeint ist und wofür es gut ist.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
K Observer Observable update() . Java Basics - Anfänger-Themen 13
G Implementierung des Observer/Observable Patterns - Gut so? Java Basics - Anfänger-Themen 3
H [erledigt] Observable/Observer Beobachter entfernen Java Basics - Anfänger-Themen 2
G Unterschied Observer&Observable<->java.beans.Prope Java Basics - Anfänger-Themen 4
G Observable/Observer-Patterns Java Basics - Anfänger-Themen 9
L Vererbung Multivererbung und Observable Java Basics - Anfänger-Themen 4
L Obersver - Observable, Bomberman Java Basics - Anfänger-Themen 11
E Interface extends Observable Java Basics - Anfänger-Themen 13
J Methoden Observer-Pattern mit Consumer und accept( ) Java Basics - Anfänger-Themen 6
J Implementierung von Observer und Singleton-Pattern Java Basics - Anfänger-Themen 9
fLooojava MVC Pattern und Observer Pattern Java Basics - Anfänger-Themen 6
Y Observer update Java Basics - Anfänger-Themen 3
N Observer funktioniert nicht Java Basics - Anfänger-Themen 13
G Observer löst zweimal aus Java Basics - Anfänger-Themen 8
A ein observer "post"problem Java Basics - Anfänger-Themen 3
A Observer Pattern Problem Java Basics - Anfänger-Themen 15
J Interface Frage zu Interfces am Beispiel Observer Pattern Java Basics - Anfänger-Themen 8
F Observer Java Basics - Anfänger-Themen 7
U observer thread safe Java Basics - Anfänger-Themen 4
Helgon Observer Pattern - hasChanged() immer false Java Basics - Anfänger-Themen 10
B Wozu Observer? Java Basics - Anfänger-Themen 9
Spin Observer Patteern java Java Basics - Anfänger-Themen 7
O Liste - Observer/Observeable - HashMap Hilfe Java Basics - Anfänger-Themen 19
C OOP Observer Pattern Java Basics - Anfänger-Themen 2
O Observer - Einfach erklärt? Java Basics - Anfänger-Themen 5
K Observer Pattern notifyObservers Java Basics - Anfänger-Themen 9
P Fragen zum Observer Muster und Datenbanken Java Basics - Anfänger-Themen 2
T Observer ansprechen Java Basics - Anfänger-Themen 2
R Observer funktioniert nicht. Sehe keine Fehler Java Basics - Anfänger-Themen 2
W Observer-Pattern Java Basics - Anfänger-Themen 3
hdi JList mit Model und Observer -> Chaos, blicke nicht durch Java Basics - Anfänger-Themen 22
hdi Observer als statische Klasse ? Java Basics - Anfänger-Themen 2
N observer frage Java Basics - Anfänger-Themen 2
N observer Java Basics - Anfänger-Themen 12
G Benötige Hilfe bei Problem mit Observer! Java Basics - Anfänger-Themen 2
E Observer Java Basics - Anfänger-Themen 7
T Verständnisfrage Observer-Pattern Java Basics - Anfänger-Themen 8
Y Observer - notifyObservers(Object arg) Java Basics - Anfänger-Themen 4
M Servlets und Observer Java Basics - Anfänger-Themen 2
S Observer Pattern notifyObserver Java Basics - Anfänger-Themen 6
M Observer Pattern Java Basics - Anfänger-Themen 14
A MVC Observer Pattern Java Basics - Anfänger-Themen 2
Mugetsu35 ArrayList Update ohne Index Java Basics - Anfänger-Themen 6
E Mysql Update wenn es nicht existiert insert Java Basics - Anfänger-Themen 14
G Konstruktor und update Java Basics - Anfänger-Themen 4
Henri Webservice Delete und Update Methode funktioniert nicht Java Basics - Anfänger-Themen 27
J Threads PrograssBar update während thread Java Basics - Anfänger-Themen 13
S Lost-Update Semaphore Java Basics - Anfänger-Themen 6
K Schlüsselworte Nach Java update findet mdb Datei nicht Java Basics - Anfänger-Themen 6
M Methodenaufruf über SQL UPDATE Java Basics - Anfänger-Themen 8
J JavaFX -> SocketIO -> Thread -> Update Label Java Basics - Anfänger-Themen 13
C JTable update mit MySQL Datenbank Java Basics - Anfänger-Themen 1
J fehler nach windows update Java Basics - Anfänger-Themen 44
G Threads Konstantes Update Java Basics - Anfänger-Themen 1
X Eventservice Probleme nach Update Java Basics - Anfänger-Themen 0
B VAriables update in for-Schelifen Java Basics - Anfänger-Themen 3
L Jar aus Jar Starten lassen (Update Tool) Java Basics - Anfänger-Themen 6
P Update System Java Basics - Anfänger-Themen 16
R Nach Ubuntu-Update: Konsole spuckt bei neu Kompilierten Programmen Fehler aus (BlueJ)(Ubuntu12.04) Java Basics - Anfänger-Themen 11
L Auf herunterfahren des PCs reagieren und Datensatz update machen Java Basics - Anfänger-Themen 15
K Threads jProgressBar update Java Basics - Anfänger-Themen 14
Gugelhupf JDK installieren Fehlermeldung 1336 - Java SDK 7 Update 5 x64 Java Basics - Anfänger-Themen 4
A JDK installieren Java update - neu installieren? Java Basics - Anfänger-Themen 7
R JDK installieren Nach Update auf java 1.7 Connection refused Java Basics - Anfänger-Themen 9
E Programm - Update via Internet? Java Basics - Anfänger-Themen 5
B JDK installieren Java SE Development Kit 6 Update 25 Java Basics - Anfänger-Themen 5
M Update-Ticker... String in Textdatei schreiben und auslesen Java Basics - Anfänger-Themen 5
S MVC Prinzip - update() ? Java Basics - Anfänger-Themen 2
B Problem mit prepareStatement UPDATE Java Basics - Anfänger-Themen 2
M Serializable - Bei Update ältere Daten importieren Java Basics - Anfänger-Themen 14
C JAVA - Einstieg mit Eclipse - Update Sites und Ähnliches Java Basics - Anfänger-Themen 6
S JTree, Problem mit View Update Java Basics - Anfänger-Themen 2
L Java Persistence API - Update Befehl? Java Basics - Anfänger-Themen 5
hdi Fehler beim Model-Update einer JList (DefaultListModel) Java Basics - Anfänger-Themen 3
A update/draw schleife Java Basics - Anfänger-Themen 5
S update wird nicht aufgerufen Java Basics - Anfänger-Themen 9
G JFreeChart und das Update(was nicht klappt). Java Basics - Anfänger-Themen 3
A label update Java Basics - Anfänger-Themen 10
Y JDK 6 Update 5 with Java EE? Java Basics - Anfänger-Themen 2
M Java SQL-Update Java Basics - Anfänger-Themen 6
A per "update" ein Bild Strich für Strich "male Java Basics - Anfänger-Themen 9
S Ein Update System programmieren Java Basics - Anfänger-Themen 27
P Zeichenprogramm-->update() aushebeln Java Basics - Anfänger-Themen 11
S SQL UPDATE in Java "wie schreiben"? Java Basics - Anfänger-Themen 6
E Update JList Java Basics - Anfänger-Themen 13
J Problem bei Update auf Datenbank Java Basics - Anfänger-Themen 2
R JRE 1.5.0 Update 7 Install erkennt nicht Firefox/Netscape Java Basics - Anfänger-Themen 3
M [SOLVED]update() bei MVC Java Basics - Anfänger-Themen 4
M Datenbankabfrage mit UPDATE Java Basics - Anfänger-Themen 4
M Unterschied zwischen J2SE 5.0 Update x und J2SE 1.4.x Java Basics - Anfänger-Themen 4
N Array aus JCheckBox? 1000 if's UPDATE: Spaltennamen auslesen Java Basics - Anfänger-Themen 12
G Update auf Datenbankspalte vom Typ Timestamp mit aktu. Datum Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben