我有一个JML问题。有什么区别

/*@ invariant array_ != null; */

并宣布

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

关于阵列的元素?在每种情况下,哪些财产为他们持有什么财产?

提前致谢。

有帮助吗?

解决方案

关于阵列的元素?在每种情况下,哪些财产为他们持有什么财产?

关于元素什么都没说。唯一保证的是 array_ 参考不是零。

注意

Object[] array = null;

例如

Object[] array_ = { null };

或者

Object[] array_ = { };

第一行将违反不变性,而后两行将被允许,因为 array_ 将指向一个实际数组(即使此数组可能只包含空元素,甚至根本不包含元素)。


另一个区别是 invariant array_ != null; 方法, array_ != null 只有在每种方法之后才能保持 non_null 巴格马 array_ != null 必须在整个程序中保持每个控制点。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top