Package: groovy.contracts

## [Java] Annotation Type Invariant

- groovy.contracts.Invariant

-     @Retention(RetentionPolicy.RUNTIME)
      @Target(ElementType.TYPE)
      @Incubating
      @ClassInvariant
      @Repeatable(Invariants.class)
      @AnnotationProcessorImplementation(ClassInvariantAnnotationProcessor.class)
      public @interface Invariant

  Represents a class-invariant.

  The class-invariant defines assertions holding during the entire objects life-time.

  Class-invariants are verified at runtime at the following pointcuts:

  - after a constructor call
  - before a method call
  - after a method call

  Whenever a class has a parent which itself specifies a class-invariant, that class-invariant expression is combined with the actual class's invariant (by using a logical AND).

- - ### Element Summary

    Required Element Summary
    Type | Name and Description
    --- | ---
    `Class` | `value`

  - ### Inherited Methods Summary

    Inherited Methods
    Methods inherited from class | Name
    --- | ---
    `class Object` | `equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Element Detail

    - #### public Class value