JML: \存在 & JML对象序列

发布于 2024-12-29 20:34:18 字数 599 浏览 0 评论 0原文

我试图证明我的收藏中是否存在具有特定状态的对象。我的集合由具有名为 getStatus() 的方法的对象组成。现在我想证明这个集合中是否存在具有给定状态的对象。

@ requires (\exists int i; 0 <= i && i < sizeLimit; orders[i].getStatus().equals(Status.New));
public Order getFirstOrder(Status s)

问题是 order[i] 必须是数组类型,它是 JMLObjectSequence 类型。有没有办法将此序列转换为数组,语法如何?

另一种方法是(使用 itemAt(i)):

@ requires (\exists int i; 0 <= i && i < sizeLimit; orders.itemAt(i).getStatus().equals(Status.New));

但是 itemAt(i) 返回一个不是 Order 类型的对象 - 因此找不到方法 getStatus() 。

我会很高兴得到一些帮助。那里没有太多例子。

im trying to prove if there exists a object with a particular status in my collection. My collection consists of objects with a method called getStatus(). Now i want to prove if there is a object with given status in this collection.

@ requires (\exists int i; 0 <= i && i < sizeLimit; orders[i].getStatus().equals(Status.New));
public Order getFirstOrder(Status s)

The problem is that the orders[i] must be type of array nut it is type of JMLObjectSequence.Is there a way to cast this sequence to an array and how would the syntax look like?

Another way would be (using itemAt(i)):

@ requires (\exists int i; 0 <= i && i < sizeLimit; orders.itemAt(i).getStatus().equals(Status.New));

BUT itemAt(i) returns an Object which is not type of Order - so the method getStatus() isnt found.

I would be very glad about some help. There arent much examples out there.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

清晨说晚安 2025-01-05 20:34:18

怎么样:

((Order)orders.itemAt(i)).getStatus()

确保 getStatus() 在定义时使用 /@pure/ 注释标记为纯方法。

public /*@pure*/ Status getStatus(){ ...}

这应该是有效的。

How about:

((Order)orders.itemAt(i)).getStatus()

Make sure getStatus() is notated as a pure method with the /@pure/ annotation where it is defined.

public /*@pure*/ Status getStatus(){ ...}

This should be valid.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文