Если у меня есть редко используемая коллекция в каком-то классе, которая может быть создана несколько раз, я иногда могу прибегнуть к следующей "идиоме", чтобы сохранить ненужные создания объектов:
List<Object> list = null;
void add(Object object) {
if (list == null)
list = new ArrayList<Object>();
list.add(object);
}
// somewhere else
if (list != null)
for (Object object : list)
;
Теперь мне было интересно, не могу ли я устранить эти нулевые проверки с помощью Collections.emptyList()
, но тогда мне пришлось бы изменить if if check in add()
следующим образом:
if (list == Collections.<Object>emptyList())
list = new ArrayList<Object>();
Есть ли лучший способ справиться с этим, кроме как просто выделять новую пустую коллекцию каждый раз?
EDIT:, чтобы быть ясным, я хотел бы использовать Collections.emptyList(), но вышеуказанная проверка в add() действительно очень уродливая... Мне было интересно, если там лучше способ сделать это или даже совсем другой способ справиться с этим.