Создание полей / конструкторов PRIVATE, PUBLIC или NEITHER в классах объектов для десериализации JSON с использованием GSON? - PullRequest
0 голосов
/ 18 октября 2018

Я написал простую программу, которая извлекает данные о погоде из API OpenWeatherMap и десериализует ответ JSON в объекты.Один из объектов называется CurrentForecast.Вот фрагмент класса:

public class CurrentForecast {
    String name;
    long dt;
    LocationCoord coord;
    List<WeatherObject> weather;
    MainInfo main;
    WindInfo wind;

    public static class LocationCoord {
        Double lon;
        Double lat;

        public LocationCoord(Double lon, Double lat) {
            this.lon = lon;
            this.lat = lat;
        }
    }

    public static class WeatherObject {
        String description;

        public WeatherObject(String description) {
            this.description = description;
        }
    }

    public static class MainInfo {
        Double temp;
        Double temp_min;
        Double temp_max;
        Double pressure;
        Double humidity;

        public MainInfo(Double temp, Double pressure, 
                        Double humidity) {
            this.temp = temp;
            this.pressure = pressure;
            this.humidity = humidity;
        }

Есть несколько классов, вложенных в класс CurrentForecast.Поля CurrentForecast и вложенных классов не были установлены как закрытые или открытые.Я также не включил конструктор для CurrentForecast для инициализации 'name' и 'dt'.Я также заметил, что если я не включу конструкторы для других вложенных классов, данные JSON будут десериализованы очень хорошо.

У меня вопрос: нужно ли установить поля для CurrentForecast и вложенных классов в private и включить методы get?Нужно ли мне включать конструкторы или я могу их убрать?

Хотелось бы получить информацию о том, как правильно настроить классы объектов (особенно для десериализации данных JSON с использованием GSON в основном драйвере) и улучшить свой стиль программирования.Спасибо!

1 Ответ

0 голосов
/ 18 октября 2018

Стоит ли устанавливать поля как приватные и включать геттеры?

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

Нужно ли включать конструкторы?

Есливам не нужен код для запуска при создании экземпляра вашего класса (когда вы создаете новый объект из класса), тогда нет необходимости создавать конструктор, так как Java создаст для вас конструктор по умолчанию (не параметризованный).

Я не знаю много о GSON и десериализации данных JSON, но я думаю, что в этой ситуации было бы полезно получить и установить геттеры, чтобы иметь возможность быстро устанавливать и получать различные переменные без чрезмерного запутывания кода.

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...