1

使用类方法,我想确保getAverage方法总是在方法之前setAverage调用

如果setAverage首先调用,它应该返回一个错误。

我很困惑如何检查集合是否在获取之前被调用。

4

2 回答 2

1

如果 getAverable 返回一个非原始对象,您可以检查该值是否为空。

如果返回原始值,如整数,则可以使用布尔值来检查是否调用了 setMethod。

class Name {
    int value;
    boolean isCalled;
    public int getValue() {
        if(isCalled == false) {
            throw new Exception();
        }
        else {
           return value;
        }
    }


    public void setValue(int value) {
        isCalled = true;
        this.value = value;
    }
}
于 2013-04-14T09:45:24.717 回答
1

没有直接的 Java 支持这样做。当然,您可以直接在方法中实现一些算法,该算法会记住哪个方法以哪个顺序执行。更好的方法是使用面向方面的编程。

做你想做的最简单的方法是编写一个 Aspect,它在一个布尔值中写入 getter 已执行,并且仅在布尔标志为 true 的情况下才允许执行 setter。

当然,这只是第一步,很容易出错。(并发、重复等)

(我在硕士论文期间写过这样一个框架。当然,它比仅检查单个顺序方法调用要复杂一些。)

于 2013-04-14T09:51:14.067 回答