Передача неизменного списка в ImmutableList.copyOf()?

У меня есть следующий код:

private static final ImmutableMultimap<String, String> namesToAddress;

public static List<String> getAddresses(String name){
  return ImmutableList.copyOf(namesToAddress.get(name));
}

Мой вопрос заключается в том, нужна ли здесь защитная функция copyOf(), так как get() все равно возвращает неизменный список?

Обратите внимание, что я использую ImmutableMultiimap из Google Guava.

Благодарю.

1 ответ

Решение

Пара вещей (в основном это описано в комментариях, но в качестве ответа):

  • Если вы используете ImmutableListMultimap как тип для namesToAddresses, get() вернет ImmutableList; не нужно звонить copyOf или актерский состав или что-нибудь
  • Даже если ты этого не сделаешь, ImmutableMultimap.get() вернет ImmutableCollection; ImmutableCollectionс asList() метод для просмотра (или, при необходимости, копирования) коллекции как ImmutableList
  • призвание ImmutableList.copyOf(ImmutableCollection) в конечном итоге вызов asList() в любом случае на коллекции
Другие вопросы по тегам