IntelliJ IDEA 2018.2 Help


The @ParametersAreNonnullByDefault annotation helps you define that all method parameters in a class or a package have @NotNull semantic, unless they are explicitly annotated with the @Nullable annotation.

The @ParametersAreNonnullByDefault annotation can be used with a package, a class, or a method.

To use the annotation, add the jsr305 library to module dependencies:

  1. Open the Project Structure dialog (Ctrl+Shift+Alt+S), and go to Modules | Dependencies.
  2. Click Add icons general add and select Library | Java.
  3. In the IntelliJ IDEA home directory, select lib\jsr305.jar.
  4. (Optionally) In the next dialog, you can modify library name and level.
  5. Apply the changes and close the dialog.

Once you add the JAR to your project, you can start using the @ParametersAreNonnullByDefault annotation. For example, 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; } }

If you annotate the sort() method with @ParametersAreNonnullByDefault, IntelliJ IDEA immediately recognizes that if statement is extraneous, and reports about the condition that is always true.

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

Last modified: 14 June 2018

See Also