Package groovy.contracts

# Annotation Interface Requires

@Documented @Retention(RUNTIME) @Target({CONSTRUCTOR,METHOD}) @Incubating @Precondition @AnnotationProcessorImplementation(RequiresAnnotationProcessor.class) @Repeatable(RequiresConditions.class) public @interface Requires

Represents a method precondition.

A precondition is a condition that must be met by clients of this class. Whenever the precondition can be satisfied, it is guaranteed that the supplier will fulfil the method's postcondition.

A method's precondition is executed as the first statement within a method call. A successor's precondition weakens the precondition of its parent class, e.g. if A.someMethod declares a precondition and B.someMethod overrides the method the preconditions are combined with a boolean OR.

Example:

       @Requires({ argument1 != argument2 && argument2 >= 0 })
       void someOperation(def argument1, def argument2)  {
         ...
       }

- ## Required Element Summary

  Required Elements
  Modifier and Type
  Required Element
  Description
  `Class`
  `value`
  Returns the closure class that evaluates the precondition expression.

- ## Element Details

  - ### value

    Class value
    Returns the closure class that evaluates the precondition expression.
    Returns:
      the generated closure class backing the precondition