org.eclipse.jdt.annotation

## Annotation Type NonNull

    @Documented
     @Retention(value=CLASS)
     @Target(value=TYPE_USE)
    public @interface NonNull

Qualifier for a reference type in a `TYPE_USE` position: The type that has this annotation is intended to not include the value `null`.

If annotation based null analysis is enabled using this annotation has two consequences:

1. Dereferencing an expression of this type is safe, i.e., no `NullPointerException` can occur at runtime.
2. An attempt to bind a `null` value to an entity (field, local variable, method parameter or method return value) of this type is a compile time error.

For the second case, diagnostics issued by the compiler should distinguish three situations:

1. Nullness of the value can be statically determined, the entity is definitely bound from either of:
   - the value `null`, or
   - an entity with a `@Nullable` type.
2. Nullness cannot definitely be determined, because different code branches yield different results.
3. Nullness cannot be determined, because other program elements are involved for which null annotations are lacking.

Note: Since org.eclipse.jdt.annotation 2.0.0, the `@Target` is `{TYPE_USE}`. For the old API, see `@NonNull` in 1.1.0.

Since:
  1.0