|
蓝森林 http://www.lslnet.com 2006年6月6日 10:18
!!请教一个Observer问题!!
import java.util.Observable;
import java.util.Observer;
public class ObserverText
{public static void main(String args[])
{myObservable mm=new myObservable();
myObserver nn=new myObserver(mm);
mm.setData(1);
mm.setData(2);
mm.setData(3);
mm.setData(4);
}
}
class myObservable extends Observable
{int data=0;
public int getData(){return data;}
public void setData(int i)
{if(data!=i)
{data=i;
setChange();
}
notifyObservers();
}
}
class myObserver implements Observer
{
public myObserver()
{}
public myObserver(myObservable m)
{m.addObserver(this);}
public void update(Observable o,Object arg/*任意对象,用于传递参数*/){
System.out.println("Data has changed to" +o.getData());
}
}
不能编译
cannot find symbol method setChange()
cannot find symbol method getData()
不知道为什么找不到。求救,多谢 先!!! |
1 setChange 是 setChanged
2 getData ,Observable 里没有 getData 这个方法 |
你是练习的,还是需要根据特定代码改的,the following is a simple example
[code]
import java.util.*;
public class test2 extends Observable
{
public test2(){}
public static void main(String[] xx)
{
test2 o = new test2();
/**
* adds any objects to be observed
*/
o.addObserver(new oo1());
o.addObserver(new oo2());
/**
* o.hasChanged() will return true after o.setChanged()
* and you can call o.clearChanged() to cancle it
*/
o.setChanged();
/**
* notify all of its observers and pass a argument
*/
o.notifyObservers("changed!");
/**
* o.hasChanged() will return false,because it finished the notification
*
*/
}
static class oo1 implements Observer
{
public void update(Observable o, Object arg)
{
System.out.println("oo1:"+arg);
}
}
static class oo2 implements Observer
{
public void update(Observable o, Object arg)
{
System.out.println("oo2:"+arg);
}
}
}
[/code] |
以下这段代码应该可以运行
[code]
import java.util.Observable;
import java.util.Observer;
public class ObserverText {
public static void main(String args[]) {
MyObservable mm = new MyObservable();
mm.addObserver(new MyObserver());
mm.setData(1);
mm.setData(2);
mm.setData(3);
mm.setData(4);
}
}
class MyObservable extends Observable {
int data = 0;
public int getData() {
return data;
}
public void setData(int i) {
if (data != i) {
data = i;
setChanged();
}
notifyObservers();
}
}
class MyObserver implements Observer {
public MyObserver() {
}
public MyObserver(MyObservable m) {
m.addObserver(this);
}
public void update(Observable o, Object arg/*任意对象,用于传递参数*/) {
System.out.println("Data has changed to" + ((MyObservable)o).getData());
}
}
[/code] |
| |