Embracing Null-Handling in Conditions
You can avoid many extra lines of code by understanding how conditional statements behave with null values. If a variable someFlag is a Boolean variable that might be null, then the following conditional block executes only if someFlag is true.
A String variable can be null, an empty string
(""), or can contain at least one character in it. If a variable
middleName is a String, then the following conditional
block executes only if middleName is not null and contains
at least one character:
// If customer has a middle name...
if (middleName) {
// Do something here if middleName has at least one character in it
}
If a variable recentOrders is a List, then the following
conditional block executes only if recentOrders is not null
and contains at least one element:
// If customer has any recent orders...
if (recentOrders) {
// Do something here if recentOrders has at least one element
}
If a variable
recentTransactions is a Map, then the
following conditional block executes only if recentTransactions is not
null and contains at least one map
entry:// If supplier has any recent transactions...
if (recentTransactions) {
// Do something here if recentTransactions has at least one map entry
}
If a variable
customerId can be null, and its data type is
anything other than the ones described above then the following conditional block executes
only if customerId has a non-null
value:// If non-boolean customerId has a value...
if (customerId) {
// Do something here if customerId has a non-null value
}
If you need to test a
Map entry in a conditional and there's a chance the
Map might be null, then remember to use the
safe-navigation operator (?.) when referencing the map key by
name:// Use the safe-navigation operator in case options Map is null
if (options?.orderBy) {
// Do something here if the 'orderBy' key exists and has a non-null value
}