2013-04-14 51 views
1

使用类方法调用一个方法,我希望确保该getAverage方法是setAverage方法之前一直被称为爪哇 - 之前另一

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

我很困惑如何在get之前检查set是否被调用。

回答

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; 
    } 
} 
1

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

要做你想做的事情的最简单的方法是编写一个方面,它写入一个布尔值,执行getter并只允许在布尔标志为true的情况下执行setter。

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

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