Class NullableUtils

java.lang.Object
org.springframework.data.util.NullableUtils

@Deprecated(since="4.0") public abstract class NullableUtils extends Object
Deprecated.
since 4.0 in favor of Nullness fully using JSpecify annotations instead of Spring Framework's own @Nullable and @NonNullApi annotations.
Utility methods to introspect nullability rules declared in packages, classes and methods.

Nullability rules are declared using Nullable, NonNullApi, 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 themselves.

 @org.jspecify.annotations.NullMarked
 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 Details

    • isNonNull

      public static boolean isNonNull(Method method, ElementType elementType)
      Deprecated.
      Determine whether 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.
      Parameters:
      method - the method to inspect.
      elementType - the element type.
      Returns:
      false if ElementType allows null values by default. true if the methods return type is a primitive and false if the method is void.
      See Also:
      • isNonNull(Annotation, ElementType)
    • isNonNull

      public static boolean isNonNull(Class<?> type, ElementType elementType)
      Deprecated.
      Determine whether 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.
      Parameters:
      type - the class to inspect.
      elementType - the element type.
      Returns:
      false if ElementType allows null values. true the given type is a primitive.
      See Also:
      • isNonNull(Annotation, ElementType)
    • isNonNull

      @Contract("null, _ -> false") public static boolean isNonNull(@Nullable AnnotatedElement element, ElementType elementType)
      Deprecated.
      Determine whether ElementType in the scope of AnnotatedElement requires non-null values. This method determines default javax.annotation.Nonnull nullability rules from the annotated element
      Parameters:
      element - the scope of declaration, may be a Package, Class, or Method. Can be null.
      elementType - the element type.
      Returns:
      false if ElementType allows null values by default or if the given AnnotatedElement is null.
    • isExplicitNullable

      public static boolean isExplicitNullable(MethodParameter methodParameter)
      Deprecated.
      Determine whether a 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.
      Parameters:
      methodParameter - the method parameter to inspect.
      Returns:
      true if the parameter is nullable, false otherwise.