2012-07-03 32 views
5

को अधिसूचित नहीं किसी कारण मेरी पर्यवेक्षकों अधिसूचित नहीं किया जा रहा जब मैं notifyObserver तरीकों फोन के लिए, java.util.Observable वस्तुओं का उपयोग कर:जावा पर्यवेक्षक पैटर्न

public class ProjectManager extends Observable 
{ 
... 
public void updateProjects(String project, String pack, String source, String ARN) 
{ 
    ... 
if(newSource) 
    { 
    tempPack.add(tempSource); 
    System.out.println("Notify observers: " + this.countObservers()); 
    this.notifyObservers(); 
    } 
     ... 
     } 

:

यहाँ

मेरी नमूदार वस्तु है मैं अपने आउटपुट से देख सकता हूं कि पर्यवेक्षक जोड़ा जा रहा है लेकिन अधिसूचित नहीं किया जा रहा है।

और मेरी पर्यवेक्षक वस्तु इस तरह दिखता है:

public class IDE implements Observer 
{ 

@Override 
public void update(Observable o, Object arg) { 

    System.out.println("Notified"); 

} 

कुछ अजीब कारण नमूदार वस्तु बिल्कुल अधिसूचित नहीं किया जा रहा है के लिए। क्या मुझसे यहां कुछ गलत हो रहा है?

उत्तर

13

से पहले आपको notifyObservers

+4

+1 setChanged की जरूरत है। जावा के 'अवलोकन योग्य' कार्यान्वयन को नापसंद करने का एक अन्य कारण। –

+0

एक प्रमुख गॉचा का बिट लेकिन मुझे लगता है कि यह एक लेनदेन के दृष्टिकोण से समझ में आ सकता है। –