Guava: ImmutableSet of either values or an empty set

guava, java

Solution

This is phrased as a question about Guava and `ImmutableSet`, but the real issue here is with `aGeoR.getFailed()`. It is essentially never appropriate for a collection-returning method to return null. It should be returning an empty set to begin with (see Effective Java); and yeah, the fact that it isn't is going to cause some pain to users.

When I have to deal with an API like that, and I can't fix it or get it fixed, I do exactly what you showed in your revision of @Jherico's answer.

Set<FailedGeoR> failedOrNull = aGeoR.getFailed();
Set<FailedGeoR> failed = (failedOrNull == null)
    ? ImmutableSet.<FailedGeoR>of()
    : ImmutableSet.copyOf(failedOrNull);

Problem

I need a cleaner solution to using an ImmutableSet. I have code that looks like ``` Set foo = ImmutableSet.copyOf(aGeoR.getFailed()); ``` it works great when aGeoR.getFailed() returns one or more entries. it fails when the returned set is null. When its null, I need a ``` Set foo = ImmutableSet.of(); ``` What is the clean way to do this?

Original source