@Documented @Retention(value=RUNTIME) @Target(value=ANNOTATION_TYPE) public @interface PostconditionAnnotation
EnsuresQualifier or of EnsuresQualifier.List.
 EnsuresQualifier, its value element
       must be an array of Strings, analogous to EnsuresQualifier.expression().
   EnsuresQualifier.List, its value
       element must be an array of postcondition annotations, analogous to EnsuresQualifier.List.value().
 The established postcondition P has type specified by the qualifier field of this
 annotation.
 
If the annotation E has elements annotated by QualifierArgument, their values are
 copied to the arguments (elements) of annotation P with the same names. Different element names
 may be used in E and P, if a QualifierArgument in E gives the name of the corresponding
 element in P.
 
For example, the following code declares a postcondition annotation for the MinLen qualifier:
 
  @PostconditionAnnotation(qualifier = MinLen.class)
  @Target({ElementType.METHOD, ElementType.CONSTRUCTOR})
  public  @interface EnsuresMinLen {
    String[] value();
     @QualifierArgument("value")
    int targetValue() default 0;
 value element holds the expressions to which the qualifier applies and targetValue holds the value for the value argument of MinLen.
 The following code then uses the annotation on a method that ensures field to be
 @MinLen(2) upon return.
 
  @EnsuresMinLen(value = "field", targetValue = 2")
  public void setField(String argument) {
    field = "(" + argument + ")";
  }
 EnsuresQualifier, 
QualifierArgument| Modifier and Type | Required Element and Description | 
|---|---|
| Class<? extends Annotation> | qualifierThe qualifier that will be established as a postcondition. | 
public abstract Class<? extends Annotation> qualifier
This element is analogous to EnsuresQualifier.qualifier().