JavaTM Platform
Standard Ed. 6

java.util
クラス Observable

java.lang.Object
  上位を拡張 java.util.Observable

public class Observable
extends Object

このクラスは、被監視オブジェクト、つまりモデル/ビューパラダイムの「データ」を表します。このクラスをサブクラス化することによって、アプリケーションが監視を希望するオブジェクトを表すことができます。

被監視オブジェクトには、1 つまたは複数のオブザーバがあります。オブザーバは、Observer インタフェースを実装する任意のオブジェクトです。被監視インスタンスに変更があると、この ObservablenotifyObservers メソッドを呼び出すアプリケーションは、そのすべてのオブザーバに対し、それらの update メソッドを呼び出すことによって変更を通知します。

通知が配信される順序は決まっていません。Observable クラスで提供されるデフォルトの実装では、登録した順序で Observer に通知しますが、サブクラスでは、この順序を変更したり、保証されない順序を使用したり、スレッドごとに通知を配信したり、必要に応じて、サブクラスのサブクラスがこの順序に従うことを保証したりすることもできます。

この通知機構はスレッドとは無関係であり、Object クラスの wait および notify 機構からは完全に独立している点に注意してください。

被監視オブジェクトが新しく作成された時点では、オブザーバのセットは空です。2 つのオブザーバに対して equals メソッドが true を返す場合にだけ、それらのオブザーバは等しいと見なされます。

導入されたバージョン:
JDK1.0
関連項目:
notifyObservers(), notifyObservers(java.lang.Object), Observer, Observer.update(java.util.Observable, java.lang.Object)

コンストラクタの概要
Observable()
          ゼロのオブザーバで被監視オブジェクトを構築します。
 
メソッドの概要
 void addObserver(Observer o)
          オブジェクトのオブザーバセットにオブザーバを追加します。
protected  void clearChanged()
          オブジェクトがもはや変更された状態ではないこと、すなわち、最新の変更がすべてオブザーバに通知されたことを示します。
 int countObservers()
          Observable オブジェクトのオブザーバの数を返します。
 void deleteObserver(Observer o)
          オブジェクトのオブザーバセットからオブザーバを削除します。
 void deleteObservers()
          オブザーバリストを消去します。
 boolean hasChanged()
          オブジェクトが変更されたかどうかを判定します。
 void notifyObservers()
          オブジェクトが、hasChanged メソッドに示されるように変更されていた場合、そのすべてのオブザーバにそのことを通知し、次に clearChanged メソッドを呼び出して、このオブジェクトがもはや変更された状態でないことを示します。
 void notifyObservers(Object arg)
          オブジェクトが、hasChanged メソッドに示されるように変更されていた場合、そのすべてのオブザーバにそのことを通知し、次に clearChanged メソッドを呼び出して、このオブジェクトがもはや変更された状態でないことを示します。
protected  void setChanged()
          Observable オブジェクトを変更されたものとしてマーキングします。
 
クラス java.lang.Object から継承されたメソッド
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

Observable

public Observable()
ゼロのオブザーバで被監視オブジェクトを構築します。

メソッドの詳細

addObserver

public void addObserver(Observer o)
オブジェクトのオブザーバセットにオブザーバを追加します。 ただし、すでにオブザーバセットにあるオブザーバと同じでないものに限ります。複数のオブザーバに通知が配信される順序は指定されません。クラスのコメントを参照してください。

パラメータ:
o - 追加するオブザーバ
例外:
NullPointerException - パラメータ o が null の場合

deleteObserver

public void deleteObserver(Observer o)
オブジェクトのオブザーバセットからオブザーバを削除します。このメソッドに null を渡しても、何の効果もありません。

パラメータ:
o - 削除するオブザーバ

notifyObservers

public void notifyObservers()
オブジェクトが、hasChanged メソッドに示されるように変更されていた場合、そのすべてのオブザーバにそのことを通知し、次に clearChanged メソッドを呼び出して、このオブジェクトがもはや変更された状態でないことを示します。

各オブザーバの update メソッドが 2 つの引数 (この被監視オブジェクトと null) で呼び出されます。つまり、このメソッドは次と同じになります。

notifyObservers(null)

関連項目:
clearChanged(), hasChanged(), Observer.update(java.util.Observable, java.lang.Object)

notifyObservers

public void notifyObservers(Object arg)
オブジェクトが、hasChanged メソッドに示されるように変更されていた場合、そのすべてのオブザーバにそのことを通知し、次に clearChanged メソッドを呼び出して、このオブジェクトがもはや変更された状態でないことを示します。

各オブザーバの update メソッドが 2 つの引数(この被監視オブジェクトと arg)で呼び出されます。

パラメータ:
arg - 任意のオブジェクト
関連項目:
clearChanged(), hasChanged(), Observer.update(java.util.Observable, java.lang.Object)

deleteObservers

public void deleteObservers()
オブザーバリストを消去します。この結果、オブジェクトのオブザーバは存在しなくなります。


setChanged

protected void setChanged()
Observable オブジェクトを変更されたものとしてマーキングします。hasChanged メソッドは true を返すようになります。


clearChanged

protected void clearChanged()
オブジェクトがもはや変更された状態ではないこと、すなわち、最新の変更がすべてオブザーバに通知されたことを示します。 これにより、hasChanged メソッドは false を返します。このメソッドは、notifyObservers メソッドによって自動的に呼び出されます。

関連項目:
notifyObservers(), notifyObservers(java.lang.Object)

hasChanged

public boolean hasChanged()
オブジェクトが変更されたかどうかを判定します。

戻り値:
オブジェクトに対し、clearChanged メソッドよりあとに setChanged メソッドが呼び出された場合にだけ true、そうでない場合は false
関連項目:
clearChanged(), setChanged()

countObservers

public int countObservers()
Observable オブジェクトのオブザーバの数を返します。

戻り値:
オブジェクトのオブザーバの数

JavaTM Platform
Standard Ed. 6

バグの報告と機能のリクエスト
さらに詳しい API リファレンスおよび開発者ドキュメントについては、Java SE 開発者用ドキュメントを参照してください。開発者向けの詳細な解説、概念の概要、用語の定義、バグの回避策、およびコード実例が含まれています。

Copyright 2009 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms. Documentation Redistribution Policy も参照してください。