From cc98adac012d0d18c70628eb5e6f1646ce574e8a Mon Sep 17 00:00:00 2001 From: Reinier Zwitserloot Date: Tue, 23 Mar 2021 05:08:19 +0100 Subject: [records] [javac] Putting `@NonNull` on a 'field' of a record now affects the compact constructors, generating one if need be. --- website/templates/features/NonNull.html | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'website/templates') diff --git a/website/templates/features/NonNull.html b/website/templates/features/NonNull.html index 67cc262c..57aa62fe 100644 --- a/website/templates/features/NonNull.html +++ b/website/templates/features/NonNull.html @@ -7,11 +7,11 @@ <@f.overview>

- You can use @NonNull on the parameter of a method or constructor to have lombok generate a null-check statement for you. + You can use @NonNull on a record component, or a parameter of a method or constructor. This will cause to lombok generate a null-check statement for you.

- Lombok has always treated various annotations generally 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. + Lombok has always treated various annotations generally 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. However, using lombok's own @lombok.NonNull on a parameter or record component results in the insertion of the null-check at the top of that method.

- The null-check looks like if (param == null) throw new NullPointerException("param is marked @NonNull but is null"); 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. + The null-check looks like if (param == null) throw new NullPointerException("param is marked @NonNull but is null"); 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. For record components, the null-check will be inserted in the 'compact constructor' (the one that has no argument list at all), which will be generated if you have no constructor. If you have written out the record constructor in long form (with parameters matching your components exactly), then nothing happens - you'd have to annotate the parameters of this long-form constructor instead.

If a null-check is already present at the top, no additional null-check will be generated.

-- cgit