質問

JMLの質問があります。違いは何ですか

/*@ invariant array_ != null; */

そしてそれを宣言します

protected /*@ non_null */ Object[] array_;

array_の要素について?それぞれの場合にどのようなプロパティが保持していますか?

前もって感謝します。

役に立ちましたか?

解決

array_の要素について?それぞれの場合にどのようなプロパティが保持していますか?

要素については何も言われていません。保証されている唯一のことは、です array_ 参照はヌルではありません。

間の違いに注意してください

Object[] array = null;

そして、たとえば

Object[] array_ = { null };

また

Object[] array_ = { };

最初の行は不変に違反しますが、後者の2つは許可されます。 array_ 実際の配列を指します(この配列には、null要素のみが含まれている場合、または要素がまったく含まれていない場合でも)。


もう1つの違いは、です invariant array_ != null; アプローチ、 array_ != null 各メソッドの後にのみ保持する必要がありますが、 non_null プラグマ array_ != null プログラム全体のすべての制御ポイントを保持する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top