3

size_ が 0 の場合に null を返すことを保証する事後条件を設定する必要があります。

 if(size_ == 0)
  return null;

どうすればjmlでそれを行うことができますか? 何か案は?以下は機能しません:

//@ ensures size_ == null ==> \return true;

前もって感謝します

4

2 に答える 2

4

試す

//@ ensures size_ == null ==> \result == true;

例:

//@ ensures size_ == null ==> \result == true;
public boolean sizeUndefined() {
    if (size_ == null)
        return true;

    return size_.length() > 0;
}

次のように単純に記述することもできます。

//@ ensures size_ == null ==> \result;

のドキュメントは\result次のとおりです。

3.2.14 \result
通常の事後条件または非 void メソッドの変更ターゲット内では、特別な識別子 \result は、メソッドの戻り値の型を型とする仕様式です。メソッドによって返される値を示します。\result は、void 以外のメソッドの宣言を変更する、ensure、also_ensures、modifies、または also_modifies プラグマ内でのみ許可されます。

于 2010-12-06T09:14:52.913 に答える
1

まず第一にsize_、 、Objectまたははどのような型primitive(int)ですか?

次に、メソッドの戻り値の型は何ですか? Objectまたはprimitive(boolean)

プリミティブ型を と比較したり、プリミティブ型が返されるはずの場所にnull戻したりすることはできません。であるnullと仮定し、戻り値が である場合、事後条件は次のようになります。size_intboolean

//@ ensures size_ == 0 ==> \result;
于 2012-12-07T03:14:13.640 に答える