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:
-
Method Summary
Modifier and TypeMethodDescriptionstatic boolean
isExplicitNullable
(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
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.
-