这个意图改变了一个库方法契约。 方法约定的语法如下:
contract ::= (clause ';')* clause
clause ::= args '->' effect
args ::= ((arg ',')* arg )?
arg ::= value-constraint
value-constraint ::= '_' | 'null' | '!null' | 'false' | 'true'
effect ::= value-constraint | 'fail' | 'new' | 'this' | 'param' number
number ::= [1-9] [0-9]*

约束意味着:

示例:

@Contract("_, null -> null") - 方法的第二个参数为 null,则返回 null
@Contract("_, null -> null; _, !null -> !null") - 方法的第二个参数为 null,则返回 null,否则返回非 null。
@Contract("true -> fail") - 一个典型的 assertFalse 方法,如果 true 被传递给它,它会抛出一个异常。