gpt4 book ai didi

java - JML 不是空变体?

转载 作者:行者123 更新时间:2023-11-30 09:52:07 26 4
gpt4 key购买 nike

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

/*@ invariant array_ != null; */

并将其声明为

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

关于array_的元素?在每种情况下,他们拥有什么属性(property)?

提前致谢。

最佳答案

regarding the elements of array_? What property holds for them in each case?

关于元素什么也没说。唯一可以保证的是 array_ 引用不为空。

注意区别

Object[] array = null;

例如

Object[] array_ = { null };

Object[] array_ = { };

第一行将违反不变量,而后两行将被允许,因为 array_ 将指向一个实际的数组(即使这个数组可能只包含 null 元素,甚至根本没有元素).


另一个区别是,在 invariant array_ != null; 方法中,array_ != null 只能在每个方法之后保持,而如果您使用 non_null pragma array_ != null 必须在整个程序的每个控制点保持。

关于java - JML 不是空变体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4359418/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com