Annotation Interface NonNull

@Documented @Retention(CLASS) @Target(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.