2016-08-31 5 views
-1

У меня есть сущность. Несколько раз внутренняя коллекция info элементы не создаются. Поэтому для реализации метода соответствия мне нужна нулевая проверка.Java8 null проверить коллекцию перед добавлением элемента

public class Tag { 
    ... 
    private Set<ProjectInfo> projectInfoSet; 
    ... 

    public void addProjectInfo(ProjectInfo projectInfo) { 
    if (this.projectInfoSet == null) { 
     this.projectInfoSet = new HashSet<>(); 
    } 
    this.projectInfoSet.add(projectInfo); 
    } 
} 

Я считаю, что Java8 обеспечивает лучшее решение. Например, используя Дополнительно класс. Но я не уверен, что хорошо использовать Дополнительно в моем объекте класс. Другой возможный случай мне здесь не нужен, потому что мне нужно создать projectInfoSet, ему должно понравиться поведенческая стратегия стратегии.

Может кто-то рекомендовать лучший способ реализации или объяснения того, как это можно было бы сделать лучше.

+4

Есть ли причина, чтобы не инициализировать этот элемент, когда вы объявляете его? 'private Set projectInfoSet = new HashSet <>();' – Eran

ответ

1

Добавить начальное значение для вашего поля и забыть о нулевой контроль:

public class Tag { 
    ... 
    private Set<ProjectInfo> projectInfoSet = new HashSet<>(); 
    ... 

    public void addProjectInfo(ProjectInfo projectInfo) { 
     this.projectInfoSet.add(projectInfo); 
    } 
} 
+0

Я попытался это сделать, но если контроллер получает json с пустым полем, у меня нет коллекции здесь, поэтому я удалил инициализацию по умолчанию здесь, чем. Как вы думаете, я должен рассмотреть мою проблему конвертации json и исправить ее? – Sergii

2

Если вы используете джексон вы можете использовать параметр конфигурации initialiase это?

Как это здесь

ObjectMapper mapper = new ObjectMapper(); 
mapper.getSerializationConfig().setSerializationInclusion(Inclusion.NON_DEFAULT); 
Смежные вопросы