Вопрос

У меня есть метод, который ожидает установленного параметра. Я хочу передать пустой набор, и я не хочу никаких побочных эффектов на наборе.

Я могу сделать это с коллекциями, передав:

 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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top