IntelliJ IDEA 2017.1 Help

@ParametersAreNonnullByDefault Annotation


Annotation @ParametersAreNonnullByDefault gives the developer an option to define that for a given class or package all the elements (methods, parameters, fields and variables) have @NotNull semantic, unless they are explicitly annotated with the @Nullable annotation.

This is done by adding annotation @javax.annotation.ParametersAreNonnullByDefault to the entire package, class, or method.

To use @javax.annotation.ParametersAreNonnullByDefault annotation, make sure that jsr305 jars are added to the module libraries.


Consider the following code:

public static <T extends Comparable<T>> List<T> sort(List<T> list) { if(list != null){ List<T> copy = new ArrayList<T>(list); sort(copy); return copy; } else { return null; } }

IntelliJ IDEA doesn't complain.

Let's decorate the sort() method with @ParametersAreNonnullByDefault annotation, which means that all the symbols of this method behave as if they were @NotNull.

IntelliJ IDEA immediately recognizes that if statement is extraneous, and reports about the condition that is always true:


However, if you decorate the parameter of the method sort() as nullable, you will see no inspection messages:


See Also

Last modified: 18 July 2017