我正在使用我在 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 的构造函数。
有什么解决办法?
如果标签的顺序无关紧要,请删除所有
Order
和 Element
注释并在 Transient
字段上设置 id
:
import org.simpleframework.xml.Transient
...
@JvmField
@PrimaryKey(autoGenerate = true) // For Room
@field:Transient
var id = 0
...