Какой лучший способ создать пустой набор в объекте построителя - PullRequest
0 голосов
/ 16 февраля 2019

У класса есть набор объектов String, определенный как его переменная экземпляра.

Шаг 1: У меня есть метод, который создает объект для этого класса, назначает пустой набор String переменной экземпляра изатем возвращает объект.

Метод, который получает его, передает его другому методу, который добавляет больше String к этому пустому набору.

Теперь, как мне создать пустой набор на шаге 1?

а.Использование Collections.<String>emptyList() создает неизменный набор строк, и это не выдает ошибку, когда новые строки добавляются позже во втором методе.Необходимы некоторые подробности об основах того, как это происходит.

b.new HashSet<>() Это создает изменчивую карту.

Какой правильный подход и почему?Есть еще один хороший способ?

1 Ответ

0 голосов
/ 16 февраля 2019

Ваш вопрос звучит так, как будто вы создаете экземпляр с помощью компоновщика, а затем кто-то пытается изменить созданный экземпляр.

Не пишите так;Строители должны практически всегда возвращать неизменные.Если в процессе сборки элементы не добавляются в набор, то Set.of() это так (или, в API до JDK9, Collections.emptySet()).Они будут выброшены, когда вы попытаетесь добавить к ним, что является точкой.

Если вы намереваетесь создать изменяемый объект, с помощью компоновщика или нет, очевидно, что тогда необходим некоторый изменяемый набор.Возможно, HashSet, но учтите, что HashSet обычно плохая идея для сборщиков;общее ожидание заключается в том, что порядок поддерживается, поэтому вам нужно вместо этого LinkedHashSet или, что-нибудь вроде гуавы ImmutableSet, которая более оптимизирована.

...