У меня есть простая иерархия, содержащая следующее:
- абстрактный класс BaseItem
- открытый элемент класса: BaseItem
- класс Рюкзак: Предмет
Все они должны работать с сериализацией Kotlinx. Все шло нормально, пока я не добавил класс Backpack
. Я использую версию 1.4.32
сериализации Kotlinx.
Вот моя иерархия классов в деталях
// Items.kt
@Serializable
sealed class BaseItem {
abstract val id: String
abstract val type: ItemType
abstract var brand: String
abstract var model: String
abstract var imageLink: String
abstract var traits: MutableList<Trait>
abstract var implicitTraits: MutableList<Trait>
abstract var details: MutableMap<String, String>
}
@Serializable
open class Item(
override val id: String = UUID.randomUUID().toString(),
override val type: ItemType = ItemType.UNDEFINED,
override var brand: String,
override var model: String,
override var imageLink: String,
override var traits: MutableList<Trait>,
override var implicitTraits: MutableList<Trait>,
override var details: MutableMap<String, String>,
) : BaseItem()
@Serializable // is marked as incorrect
class Backpack(
brand: String,
model: String,
imageLink: String,
traits: MutableList<Trait>,
implicitTraits: MutableList<Trait>,
details: MutableMap<String, String>,
var volume: Int
) : Item(
type = ItemType.BACKPACK,
brand = brand,
model = model,
imageLink = imageLink,
traits = traits,
implicitTraits = implicitTraits,
details = details
)
IDE показывает мне следующее сообщение для аннотации @Serialization
, прикрепленной к классу Backpack
.
This class is not serializable automatically because it has primary constructor parameters that are not properties
Мне не удалось выяснить, как это сделать, чтобы исправить это