Method contract has the following syntax:
contract ::= (clause ';')* clause
clause ::= args '->' effect
args ::= ((arg ',')* arg )?
arg ::= value-constraint
value-constraint ::= '_' | 'null' | '!null' | 'false' | 'true'
effect ::= value-constraint | 'fail' | 'this' | 'new' | 'param<N>'
The constraints denote the following:
The additional return values denote the following:
Examples:
@Contract("_, null -> null") - the method returns null if its second argument is null
@Contract("_, null -> null; _, !null -> !null") - the method returns null if its second
argument is null and not-null otherwise
@Contract("true -> fail") - a typical assertFalse method which throws an
exception if true is passed to it
@Contract("_ -> this") - the method always returns its qualifier (e.g. StringBuilder#append(String)). @Contract("null -> fail; _ -> param1") - the method
throws an exception if the first argument is null, otherwise it returns the first argument (e.g.
Objects.requireNonNull).
@Contract("!null, _ -> param1; null, !null -> param2; null, null -> fail") - the method
returns the first non-null argument, or throws an exception if both arguments are null (e.g.
Objects.requireNonNullElse in Java 9).
This annotation is the same provided with Jetbrains annotations and used by Nullaway for verifying nullness. We copy the annotation to avoid an external dependency.
This class is internal and is hence not for public use. Its APIs are unstable and can change at any time.
| Modifier and Type | Method and Description |
|---|---|
| public String | value()
Contains the contract clauses describing causal relations between call arguments and the returned value. |
| value | back to summary |
|---|---|
| public String value() Contains the contract clauses describing causal relations between call arguments and the returned value. | |