javasyntaxloopsfor-loop

Null check in an enhanced for loop


What is the best way to guard against null in a for loop in Java?

This seems ugly :

if (someList != null) {
    for (Object object : someList) {
        // do whatever
    }
}

Or

if (someList == null) {
    return; // Or throw ex
}
for (Object object : someList) {
    // do whatever
}

There might not be any other way. Should they have put it in the for construct itself, if it is null then don't run the loop?


Solution

  • You should better verify where you get that list from.

    An empty list is all you need, because an empty list won't fail.

    If you get this list from somewhere else and don't know if it is ok or not you could create a utility method and use it like this:

    for( Object o : safe( list ) ) {
       // do whatever 
     }
    

    And of course safe would be:

    public static List safe( List other ) {
        return other == null ? Collections.EMPTY_LIST : other;
    }