NEW in Lombok 0.11.10: You can use @NonNull
on the parameter of a method or constructor to have lombok generate a null-check statement for you.
Lombok has always treated any annotation named @NonNull
on a field as a signal to generate a null-check if lombok generates an entire method or constructor for you, via
for example @Data
. Now, however, using lombok's own @lombok.NonNull
on a parameter results in the insertion of just the null-check
statement inside your own method or constructor.
The null-check looks like if (param == null) throw new NullPointerException("param");
and will be inserted at the very top of your method. For constructors, the null-check
will be inserted immediately following any explicit this()
or super()
calls.
If a null-check is already present at the top, no additional null-check will be generated.
lombok.nonNull.exceptionType
= [fully qualified name of an exception
] (default: java.lang.NullPointerException
).
if
statement, an exception is thrown, with the parameter / field name as message. By default, this will be a java.lang.NullPointerException
, but you can for example put java.lang.IllegalArgumentException
in this configuration key to have lombok throw a different exception.lombok.nonNull.flagUsage
= [warning
| error
] (default: not set)@NonNull
as a warning or error if configured.
Lombok's detection scheme for already existing null-checks consists of scanning for if statements that look just like lombok's own. Any 'throws' statement as
the 'then' part of the if statement, whether in braces or not, counts. The conditional of the if statement must look exactly like PARAMNAME == null
.
The first statement in your method that is not such a null-check stops the process of inspecting for null-checks.
While @Data
and other method-generating lombok annotations will trigger on any annotation named @NonNull
regardless of casing or package name,
this feature only triggers on lombok's own @NonNull
annotation from the lombok
package.
A @NonNull
on a primitive parameter results in a warning. No null-check will be generated.