Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Observer和Observable何时删除_Java - Fatal编程技术网

Java Observer和Observable何时删除

Java Observer和Observable何时删除,java,Java,我想在代码中实现观察器 我有一个模式如下 public class MyObservable extends Observable { public void setSomething(Object something) { this.something = something; setChanged(); notifyObservers(something); } } 在某个时候,我向这个类添加了一个观察器,所有的操作都很好

我想在代码中实现观察器

我有一个模式如下

public class MyObservable extends Observable {

    public void setSomething(Object something) {
        this.something = something;
        setChanged();
        notifyObservers(something);
    }
}
在某个时候,我向这个类添加了一个观察器,所有的操作都很好

现在问题来了。 当我的观察者不再使用时。 我什么时候移除观察者?
我需要吗?

考虑以下示例:

假设您正在搜索一份工作,您将通过某个门户网站在线注册该工作,并将注册到电子邮件上的工作通知,然后作为观察员。这意味着您将自己添加为观察者,并亲自观察邮件中的所有作业通知,然后根据通知应用/拒绝某些作业通知


现在让我们假设有一天你得到这份工作,你将从门户网站注销,这意味着你将不再以观察员身份注册,你将不再收到通知。

我明白了,谢谢。但我的问题不是这个意思。我有一段代码,其中包含一些模型对象,这些对象正在观察一些可观察的对象。当我离开显示这些对象的屏幕时,我希望这些观察者会死去,因为它们应该被垃圾收集。在这种情况下,我需要注销观察员吗?或者他们只是泄漏?如果是这样,哪种java方法(在普通对象的生命周期中)允许我这样做?(不,我不是说deleteObserver,我是说我从哪个方法调用deleteObserver)我甚至需要调用这个方法吗?只需要做一些类似于
try{show page}的事情,最后{deleteObserver}
where?(此文本不需要,只是为了使注释更长)是的,您应该调用该方法。哪里取决于你的应用程序。查找离开屏幕时触发的方法。例如:android的OnPause,swing的windowclosing事件。如果您正在使用按钮关闭屏幕,请单击它的onclick事件。在此方法中,让您的观察者自行移除。