gpt4 book ai didi

java - @XmlElement 在 kotlin 中使用时不起作用

转载 作者:搜寻专家 更新时间:2023-11-01 01:31:40 25 4
gpt4 key购买 nike

当我序列化 ReturnValue 类的实例时,我发现 @XmlElement不起作用。生成的 xml 仍然有一个标签 <summary> , 不是 <comment> .

返回值类:

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
data class ReturnValue(val type: String,
@XmlElement(name="comment")
val summary: String){
constructor(): this(type="java.lang.Object", summary="no summary")
}

测试程序:

fun main(args: Array<String>) {
val jaxbContext = JAXBContext.newInstance(ReturnValue::class.java)
val marshaller = jaxbContext.createMarshaller()
marshaller.marshal(
ReturnValue(type = "java.lang.Object",summary = "hello"),
System.out)
}

和输出:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><returnValue><type>type2</type><summary>hello</summary></returnValue>

所以,我想改变<summary><comment> .我该怎么做?

最佳答案

JAXB 是一种 Java API,它希望事情看起来像 Java 通常做事的方式,而 Kotlin 做事的方式略有不同。

要注释参数以使其在 JAXB 中看起来正确,您必须使用 @field:XmlElement 以便将注释放在 Kotlin 参数转换为的 Java 字段上,如下所示:

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
data class ReturnValue(val type: String,
@field:XmlElement(name = "comment") val summary: String) {
constructor() : this(type = "java.lang.Object", summary = "no summary")
}

更多信息:Annotation Use-site Targets在 Kotlin 文档中。

关于java - @XmlElement 在 kotlin 中使用时不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47049867/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com