代码之家  ›  专栏  ›  技术社区  ›  userMod2

Kotlin-使用具有接口类型的数据类

  •  0
  • userMod2  · 技术社区  · 5 年前

    我有一个 overrides 我创建的接口是为了组合两个数据类,如下所示:

    interface Overrides
    
    data class SoOverrides(
        val soId: String,
        val freeInterval: String?
    ) : Overrides
    
    data class CoOverrides(
        val coId: String,
        val pubType: String,
    ) : Overrides
    

    然后,我试图将主数据类中的项目类型设置为 Overrides 像这样:

    @Document(collection = Campaign.COLLECTION)
    data class Campaign(
        @Id
        val id: String,
        val title: String,
        val overrides: List<Overrides>? = null
    ) {
        companion object {
            const val COLLECTION: String = "campaigns"
        }
    }
    

    然而,每当我运行此程序时,我都会收到错误:

    Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [co.....models.Overrides]: Specified class is an interface
    

    有人能解释一下我需要做什么才能使用那种类型吗 覆盖范围 。我正在以这种方式扩展接口,这样我就可以在一个名称下拥有多个类,但不确定为什么它不起作用?

    我想我可以用 val overrides: List<*>? = null

    任何帮助感谢。

    谢谢。

    0 回复  |  直到 5 年前