首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用java.util.Observer跟踪类中的静态方法调用

使用java.util.Observer跟踪类中的静态方法调用
EN

Stack Overflow用户
提问于 2010-02-09 13:46:09
回答 3查看 1.1K关注 0票数 0

我是一个初学者程序员,我想知道如何解决这个问题。我试图解决的问题是使用java.util.Observer在我的程序中记录静态方法调用。

很明显,我最初的帖子肯定是把人们搞糊涂了,所以我会让它更加开放:有没有人能建议一种方法,让静态方法依赖于一个扩展了Observable的类?

感谢您的关注

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-03-07 10:26:31

感谢您的回复。这很有帮助。我通过向我的类添加一个扩展了观察者的静态方法来解决这个问题,这样它就有两个更新方法:

代码语言:javascript
运行
复制
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()传递对调用方法的引用。

例如:

代码语言:javascript
运行
复制
MyObserver.update(new Object(){}.getClass().getEnclosingMethod());

看起来工作正常。

票数 0
EN

Stack Overflow用户

发布于 2010-02-10 23:15:10

静态方法不会改变对象的状态。扩展Observable的类使用Observable来通知观察者状态的变化。对我来说,让静态方法调用hasChangednotifyObservers没有任何意义,因为它不应该改变任何东西。观察者的update方法是通过对更改的对象的引用调用的,而静态方法与类的任何实例都没有关联,因此整个想法没有任何意义。

Observable对象调用观察者如下所示(这并不是真正的代码):

代码语言:javascript
运行
复制
notifyObservers(){
    for(Observer observer : observers){
       observer.update(this, null);
    }
}

从静态方法调用notifyObservers是没有意义的。this在这里没有任何意义。

如果您的方法必须适合此方案,请将其更改为非静态。

票数 1
EN

Stack Overflow用户

发布于 2012-10-31 15:14:38

观察者对象的更新方法是独立的,你可以做任何事情。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2227040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档