0

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

显然,我原来的帖子一定只是让人们感到困惑,所以我将把它留得更开放:任何人都可以建议一种方法来保持静态方法计数在扩展 Observable 的类上吗?

感谢您的关注

4

3 回答 3

1

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

Observable对象像这样调用观察者(这不是真正的代码):

notifyObservers(){
    for(Observer observer : observers){
       observer.update(this, null);
    }
}

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

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

于 2010-02-10T15:15:09.630 回答
1

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

于 2012-10-31T07:14:37.753 回答
0

感谢您的回复。这很有帮助。我通过在扩展 Observer 的类中添加一个静态方法来解决这个问题,因此它有两个更新方法:

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-03-07T02:26:31.003 回答