После того, как kotlin стал первым языком для Android, я посвятил себя этому. С небольшим прогрессом за эти дни я перенес свои знания в kotlin. Недавно я учусь использовать GSON, Retrofit и kotlin в фиктивном проекте.
Здесь CurrentWeather
- модель, которая показывает данные в виде
data class CurrentWeather(
val latitude: Double,
val longitude: Double,
val placeName: String,
val temperature: Float,
val maxTemperature: Float,
val minTemperature: Float,
val windSpeed: Float,
val windDirection: Float,
val weatherType: String,
val weatherDescription: String,
val icon: String,
val timestamp: Instant)
class Current
отвечает за синтаксический анализ класса JSON в POJO, как я это делал раньше, но сегодня он выглядит немного иначе при использовании kotlin
data class Current(@SerializedName("coord") val location: Location,
@SerializedName("weather") val weather: List<Weather>,
@SerializedName("main") val temperatureAndPressure: TemperatureAndPressure,
@SerializedName("wind") val wind: Wind,
@SerializedName("dt") val timeStamp: Long,
@SerializedName("name") val placeName: String) {
val time: Instant by fastLazy { Instant.ofEpochSecond(timeStamp) }
val currentWeather = CurrentWeather(location.latitude,
location.longitude,
placeName,
temperatureAndPressure.temperature,
temperatureAndPressure.maxTemperature,
temperatureAndPressure.minTemperature,
wind.windSpeed ?: 0f,
wind.windAngle ?: 0f,
weather[0].main,
weather[0].description,
weather[0].icon,
time)
}
Даже если я получаю успешный ответ от модернизации (я проверил переменные членов; например, местоположение: местоположение, погода: список, температура, давление, температура, давление и т. Д. Однако, я получаю эту ошибку.
2018-11-12 21: 04: 07.455 9948-9948 / bus.green.fivedayweather E / AndroidRuntime: ИСКЛЮЧИТЕЛЬНОЕ ИСКЛЮЧЕНИЕ: основное
Процесс: bus.green.fivedayweather, PID: 9948
java.lang.IllegalArgumentException: параметр, указанный как ненулевой, является нулем: метод kotlin.jvm.internal.Intrinsics.checkParameterIsNotNull, параметр p1
на bus.green.fivedayweather.ui.CurrentWeatherFragment $ retrieveForecast $ 1.invoke (неизвестный источник: 6)
на bus.green.fivedayweather.ui.CurrentWeatherFragment $ retrieveForecast $ 1.invoke (CurrentWeatherFragment.kt: 20)
на bus.green.fivedayweather.net.OpenWeatherMapProvider $ RetrofitCallbackWrapper.onResponse (OpenWeatherMapProvider.kt: 62)
Я что-то не так делаю в разборе?