Java JML后置条件包含类方法调用
类方法的JML后置条件是否可以包含对另一个方法调用的调用 例如,我有一门课:Java JML后置条件包含类方法调用,java,contracts,jml,post-conditions,Java,Contracts,Jml,Post Conditions,类方法的JML后置条件是否可以包含对另一个方法调用的调用 例如,我有一门课: public class A { public int doA(x) { ... } public int doB(int x, int y) { ... } } 对于doB的后置条件,我可以有:确保doA(x)=doA(y)?是,前提是调用的方法不包括副作用并且声明为纯: /@pure@/注释表明peek()是一个纯方法。A. 纯方法是一种没有副作用的方法。JML只允许 断言使用纯
public class A
{
public int doA(x)
{ ... }
public int doB(int x, int y)
{ ... }
}
对于doB的后置条件,我可以有:
确保doA(x)=doA(y)
?是,前提是调用的方法不包括副作用并且声明为纯:
/@pure@/注释表明peek()是一个纯方法。A.
纯方法是一种没有副作用的方法。JML只允许
断言使用纯方法。我们声明peek()是纯的,因此它可以
在pop()的后置条件中使用。如果JML允许非纯方法
在断言中,我们可能会无意中编写
有副作用。这可能导致代码在编译时工作
启用了断言检查,但当断言
检查被禁用
public class A
{
public /*@ pure @*/ int doA(int x)
{ ... }
//@ requires ...
//@ ensures doA(x) == doA(y)
public int doB(int x, int y)
{ ... }
}