I often find myself writing Java constructors like this:
public SomeClass(final SomeType parameter) {
super(parameter);
if (parameter == null)
throw new NullPointerException();
} when what I really want to write is this:
public SomeClass(final SomeType parameter) {
if (parameter == null) throw new NullPointerException();
super(parameter);
} which is, unfortunately, illegal. But there is a simple solution:
public SomeClass(final SomeType parameter) {
super(asNotNull(parameter));
} What is asNotNull(?)?
public static <T> T asNotNull(final T parameter) {
if (parameter == null) throw new NullPointerException();
return parameter;
} As I generify the input, I am able to preserve the type on output so including calls to asNotNull(T) lose no type information and I need not write casts.
Of course, you can generalize this idea further and provide a family of tests or a more general method which takes an interface as a parameter or even an Exception parameter to change the thrown exception.