Как обрабатывать информацию в классах данных, полученных из API
Я новичок в Kotlin, и нашел класс данных!
Итак, я использую классы данных, чтобы получить некоторую информацию из JSON API, но я бы хотел обработать данные, прежде чем использовать их, чтобы сэкономить время и вычислительную мощность.
Чтобы упростить ситуацию, я проиллюстрирую простой пример:
data class UserApi(val name: String, val born: Int)
Как я уже сказал, я получаю данные из JSON API, но создание пользователя программно будет выглядеть так:
val userApi: UserApi = UserApi("Catelyn", 1990)
Теперь вместо того, чтобы вычислять, сколько лет пользователю каждый раз, выполните следующие действия:
"currentYear - userApi.born" // Calculating an approximate age
Конечно, не меняя API, я просто хотел бы получить неизменное значение, например:
userApi.age
Это возможно? Я думаю что-то вроде:
interface UserApi {
val name: String
val born: Int
}
data class User(override val name: String, override val born: Int) : UserApi {
// Calculating an approximate age
val age: Int = "currentYear - userApi.born"
}
val user: User = User("Catelyn", 1990) // Or get the data from an API.
// Getting the age of the User like this:
user.age // Same as "currentYear - userApi.born".
Это что-то вроде этого?
1 ответ
Вы можете добавить дополнительные свойства в ваш класс данных:
data class UserApi(val name: String, val born: Int) {
val age get() = LocalDate.now().year - born
}
val mikesAge = UserApi("Mike", 1990).age
Это свойство будет автоматически рассчитываться при каждом обращении к нему.
Посмотрите пример "custom getter" здесь.
Или вы можете просто определить новое свойство. Это свойство будет рассчитано только один раз:
data class UserApi(val name: String, val born: Int) {
val age = LocalDate.now().year - born
}