注釋/*@ pure @*/ 表明peek()方法是一個純方法(pure method),純方法是指沒有副作用的方法。JML中只答應(yīng)使用純方法進(jìn)行斷言確認(rèn),所以我們把peek()聲明為純方法,這樣我們就可以在pop()方法的后置條件中使用peek()方法。大家肯定想知道,為什么JML只答應(yīng)使用純方法進(jìn)行斷言確認(rèn)?問題是這樣的,假如JML答應(yīng)使用非純方法進(jìn)行斷言確認(rèn)的話,我們稍不注重就會寫出有副作用的行為規(guī)范。比如說可能會有這么一種情況,開啟了斷言確認(rèn)以后,我們的代碼正確無誤,可是假如禁止了斷言確認(rèn)后,我們的代碼卻不能運行了,或運行出錯了。這樣當(dāng)然不行!后面,我們還會進(jìn)一步討論副作用的問題。