Guava: ImmutableSet значений или пустой набор - PullRequest
4 голосов
/ 08 января 2010

Мне нужно более чистое решение для использования ImmutableSet.У меня есть код, который выглядит как

Set foo = ImmutableSet.copyOf(aGeoR.getFailed());

, он прекрасно работает, когда aGeoR.getFailed () возвращает одну или несколько записей.* Когда он обнуляется, мне нужно

Set foo = ImmutableSet.of();

Каков чистый способ сделать это?

Ответы [ 2 ]

17 голосов
/ 08 января 2010

Это сформулировано как вопрос о Гуаве и ImmutableSet, но реальная проблема здесь с aGeoR.getFailed(). По сути, метод, возвращающий коллекцию, никогда не возвращает null. Для начала он должен возвращать пустой набор (см. Эффективная Java); и да, тот факт, что это не будет причинять пользователям боль.

Когда мне приходится иметь дело с таким API, и я не могу это исправить или исправить, я делаю именно то, что вы показали в своей редакции ответа @ Jherico.

Set<FailedGeoR> failedOrNull = aGeoR.getFailed();
Set<FailedGeoR> failed = (failedOrNull == null)
    ? ImmutableSet.<FailedGeoR>of()
    : ImmutableSet.copyOf(failedOrNull);
2 голосов
/ 08 января 2010
Set foo = aGeoR.getFailed();
foo = foo == null ? new HashSet() : ImmutableSet.copyOf(foo);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...