public abstract class NullableUtils extends Object
Nullability rules are declared using NonNullApi
, Nullable
, and JSR-305
javax.annotation.Nonnull
annotations. By default (no annotation use), a package and its types are considered
allowing null values in return values and method parameters. Nullability rules are expressed by annotating
a package with a JSR-305 meta annotation such as Spring's NonNullApi
. All types of the package inherit the
package rule. Subpackages do not inherit nullability rules and must be annotated themself.
@org.springframework.lang.NonNullApi package com.example;
Nullable
selectively permits null values for method return values or method parameters by
annotating the method respectively the parameters:
public class ExampleClass { String shouldNotReturnNull(@Nullable String acceptsNull, String doesNotAcceptNull) { // … } @Nullable String nullableReturn(String parameter) { // … } }
javax.annotation.Nonnull
is suitable for composition of meta-annotations and expresses via
javax.annotation.Nonnull#when()
in which cases non-nullability is applicable.
NonNullApi
,
Nullable
Modifier and Type | Method and Description |
---|---|
static boolean |
isExplicitNullable(MethodParameter methodParameter)
Determine whether a
MethodParameter is explicitly annotated to be considered nullable. |
static boolean |
isNonNull(AnnotatedElement element,
ElementType elementType)
Determine whether
ElementType in the scope of AnnotatedElement requires non-null values. |
static boolean |
isNonNull(Class<?> type,
ElementType elementType)
Determine whether
ElementType in the scope of type requires non-null values. |
static boolean |
isNonNull(Method method,
ElementType elementType)
Determine whether
ElementType in the scope of Method requires non-null values. |
public static boolean isNonNull(Method method, ElementType elementType)
ElementType
in the scope of Method
requires non-null values.
Non-nullability rules are discovered from class and package annotations. Non-null is applied when
javax.annotation.Nonnull
is set to javax.annotation.meta.When#ALWAYS
.method
- the method to inspect.elementType
- the element type.ElementType
allows null values by default.isNonNull(Annotation, ElementType)
public static boolean isNonNull(Class<?> type, ElementType elementType)
ElementType
in the scope of type
requires non-null values.
Non-nullability rules are discovered from class and package annotations. Non-null is applied when
javax.annotation.Nonnull
is set to javax.annotation.meta.When#ALWAYS
.type
- the class to inspect.elementType
- the element type.ElementType
allows null values by default.isNonNull(Annotation, ElementType)
public static boolean isNonNull(AnnotatedElement element, ElementType elementType)
ElementType
in the scope of AnnotatedElement
requires non-null values.
This method determines default javax.annotation.Nonnull nullability
rules from the annotated elementelement
- the scope of declaration, may be a Package
, Class
, or
Method
.elementType
- the element type.ElementType
allows null values by default.public static boolean isExplicitNullable(MethodParameter methodParameter)
MethodParameter
is explicitly annotated to be considered nullable. Nullability rules
are discovered from method and parameter annotations. A MethodParameter
is considered nullable when
javax.annotation.Nonnull
is set to one of javax.annotation.meta.When#UNKNOWN
,
javax.annotation.meta.When#NEVER
, or javax.annotation.meta.When#MAYBE
.methodParameter
- the method parameter to inspect.Copyright © 2011–2021 Pivotal Software, Inc.. All rights reserved.