Package org.springframework.data.util
Class NullableUtils
java.lang.Object
org.springframework.data.util.NullableUtils
Utility methods to introspect nullability rules declared in packages, classes and methods.
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.
- Since:
- 2.0
- Author:
- Mark Paluch
- See Also:
-
NonNullApi
Nullable
-
Method Summary
Modifier and TypeMethodDescriptionstatic boolean
isExplicitNullable
(org.springframework.core.MethodParameter methodParameter) Determine whether aMethodParameter
is explicitly annotated to be considered nullable.static boolean
isNonNull
(Class<?> type, ElementType elementType) Determine whetherElementType
in the scope oftype
requires non-null values.static boolean
isNonNull
(AnnotatedElement element, ElementType elementType) Determine whetherElementType
in the scope ofAnnotatedElement
requires non-null values.static boolean
isNonNull
(Method method, ElementType elementType) Determine whetherElementType
in the scope ofMethod
requires non-null values.
-
Method Details
-
isNonNull
Determine whetherElementType
in the scope ofMethod
requires non-null values. Non-nullability rules are discovered from class and package annotations. Non-null is applied whenjavax.annotation.Nonnull
is set tojavax.annotation.meta.When#ALWAYS
.- Parameters:
method
- the method to inspect.elementType
- the element type.- Returns:
- true if
ElementType
allows null values by default. - See Also:
-
isNonNull(Annotation, ElementType)
-
isNonNull
Determine whetherElementType
in the scope oftype
requires non-null values. Non-nullability rules are discovered from class and package annotations. Non-null is applied whenjavax.annotation.Nonnull
is set tojavax.annotation.meta.When#ALWAYS
.- Parameters:
type
- the class to inspect.elementType
- the element type.- Returns:
- true if
ElementType
allows null values by default. - See Also:
-
isNonNull(Annotation, ElementType)
-
isNonNull
Determine whetherElementType
in the scope ofAnnotatedElement
requires non-null values. This method determines defaultjavax.annotation.Nonnull nullability
rules from the annotated element- Parameters:
element
- the scope of declaration, may be aPackage
,Class
, orMethod
.elementType
- the element type.- Returns:
- true if
ElementType
allows null values by default.
-
isExplicitNullable
public static boolean isExplicitNullable(org.springframework.core.MethodParameter methodParameter) Determine whether aMethodParameter
is explicitly annotated to be considered nullable. Nullability rules are discovered from method and parameter annotations. AMethodParameter
is considered nullable whenjavax.annotation.Nonnull
is set to one ofjavax.annotation.meta.When#UNKNOWN
,javax.annotation.meta.When#NEVER
, orjavax.annotation.meta.When#MAYBE
.- Parameters:
methodParameter
- the method parameter to inspect.- Returns:
- true if the parameter is nullable, false otherwise.
-