我编写了一个简单的程序,可以从OpenWeatherMap API检索天气数据,并将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 和嵌套类的字段设置为私有并包含 get 方法?我是否还必须包含构造函数,或者我可以将它们删除吗?
很想获得有关如何正确设置对象类(特别是使用主驱动程序中的 GSON 反序列化 JSON 数据(并改进我的编程风格的意见。谢谢!
您是否应该将字段设置为私有并包括 getter?
没有必要,特别是如果其他人不打算使用你的代码,但我认为这样做是一种很好的做法,因为它有助于保持整洁。轮到你了!显然要记住情况;如果你有一个变量,你只希望它所在的类能够访问它,请将其设为私有。
是否必须包含构造函数?
如果在实例化类时(从类创建新对象时(不需要运行某些代码,则无需创建构造函数,因为 Java 将为您创建一个默认(非参数化(构造函数。
我对 GSON 和反序列化 JSON 数据了解不多,但我认为在这种情况下,getter 和 setter 将有利于快速设置和获取不同的变量,而不会让代码变得太混乱。
希望对您有所帮助!