我有两个Scala案例类,它们有JAXB注释。
@XmlRootElement
@XmlSeeAlso({ Array(classOf[Element]) })
case class Config(
@(XmlElement @field) name: String,
@(XmlElement @field) reelCount: Int,
@(XmlElement @field) slots: Int,
@(XmlElementWrapper @field)@(XmlAnyElement @field) elements: List[Element]) {
private def this() = this("", 0, 0, new ArrayList())
}
@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
case class Element(
@(XmlAttribute @field)@(XmlID @field) id: Int,
@(XmlElement @field) name: String,
@(XmlElement @field) imgPath: String) {
private def this() = this(0, "", "")
}
当我从Element的第一个属性中删除@(XmlID @field)
注释时,编组工作正常。当我使用xml id字段对其进行注释时,我得到以下异常:
[IllegalAnnotationsException: 1 counts of IllegalAnnotationExceptions]
它应该在Java中使用这2个注释,但不知道我在Scala中做错了什么。有任何想法吗?或者也许是一些解决方法?
答案 0 :(得分:1)
JAXB (JSR-222)参考实现仅允许对@XmlID
类型的字段/属性进行String
注释。这就是您在IllegalAnnotationsException
类型字段上获得Int
的原因。