101. Handling nulls in nested record patterns
From Chapter 2, Problem 54, Tackling the case null clause in switch, we know that starting with JDK 17 (JEP 406), we can treat a null
case in switch
as any other common case:
case null -> throw new IllegalArgumentException(...);
Moreover, from Problem 67, we know that, when type patterns are involved as well, a total pattern matches everything unconditionally including null
values (known as an unconditional pattern). Solving this issue can be done by explicitly adding a null
case (as in the previous snippet of code) or relying on JDK 19+. Starting with JDK 19, the unconditional pattern still matches null
values only it will not allow the execution of that branch. The switch
expressions will throw a NullPointerException
without even looking at the patterns.
This statement partially works for record patterns as well. For instance, let’s consider the following records:
public interface Fruit {}
public record SeedRecord...