Annotation Interface MonotonicQualifier


@Documented @Retention(RUNTIME) @Target(ANNOTATION_TYPE) public @interface MonotonicQualifier
A meta-annotation that indicates that a qualifier signifies that an expression goes monotonically from a type qualifier T to another qualifier S. The annotation S is called the target of the monotonic qualifier, and has to be indicated by value().

This meta-annotation can be used on the declaration of the monotonic qualifier used for the type system at hand, and is often called MonoT if the target is T. The subtyping hierarchy has to be defined as follows:


 T <: MonoT <: S
 
where <: indicates the subtyping relation.

A variable of a monotonic type can only be assigned expressions of the target type T. This means that an expression of the monotonic type MonoT cannot be assigned to a variable of the same type.

Reading an expression of a monotonic type MonoT might always yield an expression of type S. However, once it has been observed that a variable has the target type T, the monotonic property ensures that it will stay of type T for the rest of the program execution. This is even true if arbitrary other code is executed.

Note that variables of a monotonic type can be reassigned arbitrarily often, but only with expressions of the target type.

  • Required Element Summary

    Required Elements
    Modifier and Type
    Required Element
    Description
    Class<? extends Annotation>