我想知道评论应该去哪里以及我应该使用什么关键字,因为我似乎无法在网上找到一个例子,我应该这样做吗?
/**
* @invariant invariant example
*/
public class Example {
}
答案 0 :(得分:4)
有一些可能性
一些例子
@Contract(“_,null - > null”) - 如果第二个方法,则返回null 参数为null。
@Contract(“_,null - > null; _,!null - >!null”) - 如果第二个参数为null,则返回null,而不是null 除此以外。
@Contract(“true - > fail”) - 典型的assertFalse()方法 如果传递了true,则抛出异常。
有关详细信息,请参阅https://www.jetbrains.com/help/idea/2016.2/contract-annotations.html。
您可以在没有IntelliJ IDEA的情况下使用它们。 IDEA对这些注释提供了明智的支持。如果确实满足指定的不变量,它将检查您的方法代码。
此方法并未涵盖所有情况。对于字段之间更复杂的依赖关系,您需要使用英语单词描述不变量。
例如,https://docs.oracle.com/javase/7/docs/api/java/util/Map.html#put(K,%20V)
如果地图以前包含该键的映射,则旧值将替换为指定的值。
此外,异常可用于描述和强制执行不变量。对于上面提到的Map.put
方法,我们有以下无效参数的异常(会破坏类不变的参数)
- @throws UnsupportedOperationException如果是put操作 此地图不支持
- @throws ClassCastException如果指定键或值的类 防止它存储在此地图中
- @throws NullPointerException如果指定的键或值为null 并且此映射不允许使用null键或值
- @throws IllegalArgumentException - 如果指定键的某些属性 或值可防止它存储在此地图中