Annotation Interface PostconditionAnnotation
A meta-annotation that indicates that an annotation E is a postcondition annotation, i.e., E is a
type-specialized version of
EnsuresQualifier
or of EnsuresQualifier.List
.
- If E is a type-specialized version of
EnsuresQualifier
, itsvalue
element must be an array ofString
s, analogous toEnsuresQualifier.expression()
. - If E is a type-specialized version of
EnsuresQualifier.List
, itsvalue
element must be an array of postcondition annotations, analogous toEnsuresQualifier.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;
The 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 + ")";
}
- See Also:
-
Required Element Summary
Modifier and TypeRequired ElementDescriptionClass
<? extends Annotation> The qualifier that will be established as a postcondition.
-
Element Details
-
qualifier
Class<? extends Annotation> qualifierThe qualifier that will be established as a postcondition.This element is analogous to
EnsuresQualifier.qualifier()
.
-