Полный ответ таков: ваш код должен выглядеть так:
class User: BaseResponse()
{
@SerializedName("api_key")
lateinit var apiKey: String // must be set by something before being read
}
abstract class BaseResponse(var error: String?=null) {
}
Вам не нужно значение по умолчанию для свойства apiKey
, если вы намерены установить его через десериализацию позже, если нет, то вам также следует добавить значение по умолчанию, как показано ниже. Метод getApiKey()
удален, потому что вам не нужно, чтобы в Kotlin все свойства имели встроенные автоматически сгенерированные геттеры , и добавив свой собственный, вы получите конфликт между сгенерированным геттером и вы создали вручную ( два метода с одинаковым именем, одна и та же подпись ).
Если вам нужно значение по умолчанию для apiKey
, оставайтесь с var
, чтобы десериализация могла работать (если вы намерены это сделать), и добавьте пустую строку по умолчанию или сделайте ее строкой, допускающей обнуление, и установите для нее значение null
.
class User: BaseResponse()
{
@SerializedName("api_key")
var apiKey: String = "" // if you want a default regardless, or make it nullable and null
}
abstract class BaseResponse(var error: String?=null) {}