Kotlin 注解@param:没有主构造函数

问题描述 投票:0回答:1

我正在使用我在 Android 上使用的 XML 解析器/生成器 'simple-xml'

自从我将模型从 Java 更新到 Kotlin 以来,我的库遇到了问题。经过调试,我发现一个Annotation

Element
效果不太好。

'@param:' annotations could be applied only to primary constructor parameters

这是 Kotlin 中的代码,编译良好,但在使用该库时在运行时显示错误。

@Entity(indices = [Index("id")])
@Root
@Order(elements = ["nom", "date"])
class Lot {
    /**
     * Constructeur Lot
     *
     * @param nom          String nom du lot
     * @param date         Date Date du lot
     */
    constructor(nom: String?, date: Date?) {
        this.nom = nom
        this.date = date
    }


    private constructor() // For Room

    @JvmField
    @PrimaryKey(autoGenerate = true) // For Room
    var id = 0

    @JvmField
    @Element
    var nom: String? = null

    @JvmField
    @Element
    var date: Date? = null

此版本无法编译:

    @JvmField
    @field:Element(name = "date", required = true)
    @param:Element(name = "date", required = true)
    var date: Date? = null

我不知道如何解决这个问题,因为 Room 需要一个空的构造函数,并且需要一个包含所有参数但没有 id 的构造函数。

有什么解决办法?

java android kotlin annotations
1个回答
0
投票

如果标签的顺序无关紧要,请删除所有

Order
Element
注释并在
Transient
字段上设置
id

import org.simpleframework.xml.Transient

...

@JvmField
@PrimaryKey(autoGenerate = true) // For Room
@field:Transient
var id = 0

...
© www.soinside.com 2019 - 2024. All rights reserved.