Kotlin - Использование класса данных с типом из интерфейса - PullRequest
0 голосов
/ 20 января 2020

У меня есть overrides интерфейс, который я создал, чтобы объединить 2 класса данных - вот так:

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"
    }
}

Однако всякий раз, когда я go запускаю это, я получаю ошибку:

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

Может кто-нибудь объяснить, что мне нужно сделать, чтобы используйте этот тип Overrides. Я расширяю интерфейс таким образом, чтобы я мог иметь несколько классов под одним именем, но не уверен, почему он не работает?

Я думаю, я мог бы просто использовать val overrides: List<*>? = null

Любая помощь приветствуется.

Спасибо.

...