Eliminate Excessive Null Checks: Cleaner Java Code Without try‑catch
This article explains why overusing null‑check statements and try‑catch blocks makes Java code messy, distinguishes valid and invalid null returns, and offers practical techniques such as assertions, exceptions, empty collections, and the Null Object pattern to write safer, more concise code.
Problem
To avoid NullPointerException, developers often write explicit null‑check statements like if (someObject != null) { someObject.doCalc(); }, which leads to repetitive and ugly code.
Key Answer
The issue stems from two situations:
When null is an invalid response and should cause an error (e.g., missing required API parameter). Use assert or throw an exception instead of silent checks.
When null is a valid “empty” result (e.g., no data found). Return empty collections or a Null Object instead of null.
Practical Advice
1. For methods returning collections, return Collections.emptyList() (or similar) rather than null, allowing callers to use the result without extra checks.
2. For non‑collection return types, return a harmless default object. Example using the Null Object pattern:
public interface Action {
void doSomething();
}
public interface Parser {
Action findAction(String userInput);
}
public class MyParser implements Parser {
private static final Action DO_NOTHING = new Action() {
public void doSomething() { /* do nothing */ }
};
public Action findAction(String userInput) {
// …
if (/* cannot find any actions */) {
return DO_NOTHING;
}
// …
}
}With this approach, callers can safely invoke findAction(...).doSomething() without null checks.
Other Helpful Tips
Prefer "constant".equals(variable) to avoid NullPointerException.
Java 8’s Optional or Guava’s Optional can encapsulate possible null values.
If a method might return null, consider throwing an exception instead.
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
Java Backend Technology
Focus on Java-related technologies: SSM, Spring ecosystem, microservices, MySQL, MyCat, clustering, distributed systems, middleware, Linux, networking, multithreading. Occasionally cover DevOps tools like Jenkins, Nexus, Docker, and ELK. Also share technical insights from time to time, committed to Java full-stack development!
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
