#android #kotlin
#Android #kotlin
Вопрос:
Привет, у меня есть класс данных Books
с некоторыми полями, такими как идентификатор, имя, цена и т.д. У меня есть другой класс данных, LocalBooks
содержащий точно такие же same
поля, как class Books
. Я хочу скопировать все значения полей Books
класса данных в поля LocalBooks
. Я пробовал этот способ. Это удобно, когда у вас всего несколько полей, но когда у вас больше полей выше 20 или больше, то выполнение этого метода занимает много времени. Я хотел знать, есть ли в kotlin какой-либо метод, который может помочь в этой цели.
data class Books(val name: String, val price: Int) : Serializable
data class LocalBooks(val name: String, val price: Int) : Serializable
val books = Books("Book1", 22)
val localBooks = LocalBooks(books.name, books.price)
Комментарии:
1. «У меня есть другой класс данных LocalBooks с точно такими же полями, как книги классов» — почему? Почему бы не иметь один
Books
класс, который имеетisLocal: Boolean = false
свойство, которое вы установилиtrue
для локальных книг? Если вы это сделаете, то для ваших нужд достаточно простогоcopy()
.2. Или вы даже можете расширить свой класс «Книги», если вы не хотите иметь решение, подобное комментарию выше.
3. Вы можете использовать отражение. Или полностью отклоните классы и используйте
Map
реализацию для имитации поведения динамических языков.
Ответ №1:
Как насчет решения по принципу составного повторного использования:
data class Book(val name: String, val price: Int)
data class LocalBook(val book: Book, val localInfo: String)
val book = Book("foo", 1)
val localBook = LocalBook(book.copy(), "bar")
Комментарии:
1. привет, что здесь «bar»?
2. привет. просто одноразовое значение-заполнитель для
LocalBook
свойстваlocalInfo
.