【发布时间】:2021-04-21 18:06:42
【问题描述】:
我有一个简单的层次结构,包含以下内容:
- 抽象类BaseItem
- 打开类项目:BaseItem
- 类背包:物品
它们都应该与 Kotlinx 序列化一起使用。在我添加 Backpack 类之前一切正常。
我使用 Kotlinx 序列化的 1.4.32 版本。
这是我的类层次结构的详细信息
// 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
我无法找出正确的工作方式
【问题讨论】:
标签: kotlin kotlinx.serialization