Прохождение ImmutableSet вместо набора?
-
23-09-2019 - |
Вопрос
У меня есть метод, который ожидает установленного параметра. Я хочу передать пустой набор, и я не хочу никаких побочных эффектов на наборе.
Я могу сделать это с коллекциями, передав:
Collections.unmodifiableSet(Sets.newHashSet())
Но я хочу передать:
ImmutableSet.of()
Если я сделаю прежний Set<Object>
создан, и я получаю «метод», не применим к ошибке Args '. Если я сделаю последнее, я получаю ImmutableSet<Object>
создан, и я получаю аналогичную ошибку.
Это работает:
Collections.unmodifiableSet(new HashSet<String>())
... но кажется безобразным, и я хочу найти сборник Google.
Решение
Попробуй это:
ImmutableSet.<String>of()
Это тоже будет работать:
Collections.<String>emptySet()
Этот синтаксис полезен для вручную определять аргументы типа в любое время, когда вывод типа не удается. :-)
Другие советы
Это также будет работать:
public static void main(String[] args) {
Set<String> emptySet = ImmutableSet.of();
doStuffWith(emptySet);
}
static void doStuffWith(Set<String> strings) {
// ...
}
Потому что уведомления о выводе типа, которые вы назначаете Set<String>
переменная и знает, что параметр типа должен быть String
.