题
我有一个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
必须在整个程序中保持每个控制点。
不隶属于 StackOverflow