JML: \存在 & JML对象序列
我试图证明我的收藏中是否存在具有特定状态的对象。我的集合由具有名为 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
怎么样:
确保 getStatus() 在定义时使用 /@pure/ 注释标记为纯方法。
这应该是有效的。
How about:
Make sure getStatus() is notated as a pure method with the /@pure/ annotation where it is defined.
This should be valid.