Hello, I get this error: `e: java.lang.IllegalSta...
# serialization
p
Hello, I get this error:
e: java.lang.IllegalStateException: class NewImport has duplicate serial name of property feedId, either in it or its parents.
when I'm annotating a sealed class with `@Serializable`:
Copy code
@Serializable
sealed class FeedOperation(open val feedId: FeedId) {

    @Serializable
    data class NewImport(override val feedId: FeedId) : FeedOperation(feedId)

    @Serializable
    data class RedoImport(override val feedId: FeedId) : FeedOperation(feedId)

    @Serializable
    data class RemoveImported(override val feedId: FeedId) : FeedOperation(feedId)
}
Are there any workarounds for this?
d
Use
abstract
instead of
open
.
p
The only way it works is if I do
Copy code
@Serializable
sealed class FeedOperation(@Transient open val feedId: FeedId = null!!)
d
Will this do?
Copy code
@Serializable
sealed class FeedOperation {
    abstract val feedId: FeedId

    @Serializable
    data class NewImport(override val feedId: FeedId) : FeedOperation()

    @Serializable
    data class RedoImport(override val feedId: FeedId) : FeedOperation()

    @Serializable
    data class RemoveImported(override val feedId: FeedId) : FeedOperation()
}
p
It works. Thank you. I didn't think about this.
I tried doing
Copy code
@Serializable
sealed class FeedOperation(abstract val feedId: FeedId)
and it did not work