我是一个初学者程序员,我想知道如何解决这个问题。我试图解决的问题是使用java.util.Observer在我的程序中记录静态方法调用。
很明显,我最初的帖子肯定是把人们搞糊涂了,所以我会让它更加开放:有没有人能建议一种方法,让静态方法依赖于一个扩展了Observable的类?
感谢您的关注
发布于 2010-03-07 10:26:31
感谢您的回复。这很有帮助。我通过向我的类添加一个扩展了观察者的静态方法来解决这个问题,这样它就有两个更新方法:
public static void update(Method method)
{
//update count here
}
@Override
public void update(Observable observable, Object obj) {
//override code to handle observable's call to update
}每当我遇到需要计数的静态方法时,我都会调用MyClass.update(),并使用反射API的getEnclosingMethod()传递对调用方法的引用。
例如:
MyObserver.update(new Object(){}.getClass().getEnclosingMethod());看起来工作正常。
发布于 2010-02-10 23:15:10
静态方法不会改变对象的状态。扩展Observable的类使用Observable来通知观察者状态的变化。对我来说,让静态方法调用hasChanged或notifyObservers没有任何意义,因为它不应该改变任何东西。观察者的update方法是通过对更改的对象的引用调用的,而静态方法与类的任何实例都没有关联,因此整个想法没有任何意义。
Observable对象调用观察者如下所示(这并不是真正的代码):
notifyObservers(){
for(Observer observer : observers){
observer.update(this, null);
}
}从静态方法调用notifyObservers是没有意义的。this在这里没有任何意义。
如果您的方法必须适合此方案,请将其更改为非静态。
发布于 2012-10-31 15:14:38
观察者对象的更新方法是独立的,你可以做任何事情。
https://stackoverflow.com/questions/2227040
复制相似问题