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 에 통지합니다만, 서브 클래스에서는, 이 순서를 변경하거나 보증되지 않는 순서를 사용하거나 thread 마다 통지를 전달하거나 필요에 따라서, 서브 클래스의 서브 클래스가 이 순서에 따르는 것을 보증하거나 할 수도 있습니다.  

이 통지 기구는 thread와는 무관계하고,Object 클래스의 waitnotify 기구로부터는 완전하게 독립하고 있는 점에 주의해 주세요.  

피감시 객체가 새롭게 작성된 시점에서는, 옵저버세트는 빈 상태(empty)입니다. 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 2006 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy 도 참조해 주세요.