Работа с конструктором в JAVA
В JAVA при создании нового объекта класса мы передаем параметры которые конструктор установит для свойств класса.
Пример: мое приложение отправило GET запрос и получило данные о погоде, город, температура сегодня, температура завтра, скорость ветра, пусть их будет 15 или 20. В случае если получены все параметры, конструктор эти значения присвоит в свойства(переменные). В случае если ничего не получено я могу создать еще один конструктор и написать логику поведения для этого сценария. Но что делать если один или несколько параметров получить не удалось? К примеру не удалось получить скорость ветра или скорость ветра и температуру на завтра и так далее. Как мне использовать конструктор в данной ситуации?
Большое спасибо за помощь!
Ответы (3 шт):
Создайте конструктор по умолчанию и сеттеры. Конструктор по умолчанию - это который без аргументов, у него пустые скобки (). Он создает объект с неинициализированными полями. Допустим, у вас класс Weather. И у вас уже есть конструктор с аргументами. Добавляете рядом пустой конструктор по умолчанию:
public Weather(){
}
Сеттеры - это методы вида
void setTemperature(double temp){
this.temp = temp;
}
Конструкторов у вас тогда будет несколько. В Java это нормально.
Ваша проблема имеет множество решений. Я бы это так сделал:
- Все примитивные поля класса
Wheatherзаменил бы на ссылочные.int->Integer,double->Doubleи так далее. - Написал бы только один конструктор, куда передаётся все ваши 15 или 20 полей.
- Если у меня к примеру, параметр №12 не пришёл в гет-запросе, я бы передал в конструктор
nullссылку.null- отличное зарезервированное значение.
Как мне использовать конструктор в данной ситуации?
Конструктор можно использовать с помощью оператора this() или super(). Вот здесь есть описание как и почему использовать эти операторы для вызова конструктора с необходимым количеством параметров.