Java Observable deleteObserver()方法与示例

可观察类deleteObserver()方法

  • deleteObserver()方法在java.util包中可用。

  • deleteObserver()方法用于从此Observable对象的观察者集中删除给定的观察者。

  • deleteObserver()方法是一种非静态方法,只能通过类对象访问,如果尝试使用类名称访问该方法,则会收到错误消息。

  • deleteObserver()方法在删除观察者时不会引发异常。

语法:

    public void deleteObserver(Observer obs);

参数:

  • Observer obs –代表要从集合中删除的观察者。

返回值:

该方法的返回类型为void,不返回任何内容。

示例

//Java程序演示示例 
//Observable的void deleteObserver(Observer obs)方法的方法

import java.util.*;

//实现观察者类 
class Observers_1 implements Observer {
    public void update(Observable obj, Object ob) {
        System.out.println("Obs1: ");
    }
}

class Observers_2 implements Observer {
    public void update(Observable obj, Object ob) {
        System.out.println("Obs2: ");
    }
}

//实施观察类
class Observed extends Observable {
    //函数调用
    void deleteObs() {        setChanged();

        //通过使用notifyObservers()方法是 
        //通知所有观察者
        //已实现        notifyObservers();
    }
}

public class DeleteObservers {
    //实现主要方法
    public static void main(String args[]) {
        Observed observed = new Observed();
        Observers_1 obs1 = new Observers_1();
        Observers_2 obs2 = new Observers_2();
        observed.addObserver(obs1);
        observed.addObserver(obs2);

        //通过使用countObservers()方法是
        //返回观察者的数量 
        //在这个对象中
        int count_obs = observed.countObservers();
        System.out.println("observed.countObservers(): " + count_obs);
        observed.deleteObs();

        //通过使用deleteObserver()方法
        //删除给定的观察者(如果存在)
        observed.deleteObserver(obs2);
        count_obs = observed.countObservers();
        System.out.println("observed.deleteObserver(obs2): " + count_obs);
        observed.deleteObs();
    }
}

输出结果

observed.countObservers(): 2
Obs2: 
Obs1: 
observed.deleteObserver(obs2): 1
Obs1: