Передача неизменного списка в 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()
в любом случае на коллекции