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:
- Dereferencing an expression of this type is safe, i.e., no
NullPointerException can occur at runtime.
- 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:
- 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.
- Nullness cannot definitely be determined, because different code branches yield different results.
- 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.