Package org.silverpeas.kernel.annotation
Annotation Type Nullable
@Documented
@TypeQualifierNickname
@Nonnull(when=UNKNOWN)
@Retention(RUNTIME)
public @interface Nullable
Type qualifier annotation to mark a parameter, an attribute or a return value might be null. An
element annotated with @
Nullable claims null value is perfectly valid to return (for
methods), pass to (parameters) or hold in (local variables and fields). By convention, this
annotation applied only when the value should always be checked against null because the
developer could do nothing to prevent null from happening. Otherwise, too eager nullable usage
could lead to too many false positives from static analysis tools. For example,
java.util.Map.get(Object key) should not be annotated @Nullable because someone may have
put not-null value in the map by this key and is expecting to find this value there ever since.
On the other hand, the java.lang.ref.Reference.get() should be annotated @Nullable
because it returns null if object got collected which can happen at any time completely
unexpectedly.
Apart from documentation purposes this annotation is intended to be used by static analysis tools to validate against probable runtime errors or element contract violations.
By defining our own annotations we ensure to be agnostic from any checking library or framework because, despite the JSR-305, a lot of tiers provide its own incompatible solution.
- Author:
- mmoquillon