gpt4 book ai didi

java - Jax-b 在解码时解释太多

转载 作者:数据小太阳 更新时间:2023-10-29 02:58:43 26 4
gpt4 key购买 nike

我有一个名为 a 的 boolean 字段和两个方法 void setA(String a)boolean isA()。我已经设置了 @XmlAccessorType(XmlAccessType.NONE) 并使用了 @XmlAttribute 作为 setter。

因为 getter 返回一个 boolean 值,但 setter 需要一个字符串 JAX-B 只是忽略了这个 setter。这是代码中各种错误的原因,因为 boolean 值设置不正确,调试非常烦人。

有没有办法告诉 JAX-B 使用 setter?为什么 JAX-B 完全被 getter 方法搞糊涂了,我虽然使用 XmlAccessType.NONE 阻止了所有隐式解释?

如果出现这样的星座,Plan B 就是让 JAX-B 失败,但这怎么办呢?

感谢任何提示:-)

最佳答案

鉴于您已经在使用 XmlAccessorType 注释,我猜您已经知道可以使用 @XmlAccessType.FIELD 并让 JAXB 在决定编码(marshal)什么时查看类字段而不是 setter 方法/解码?

根据您当前的配置,您可能在数据类型错误的 setter 方法上有一个 @XmlElement 注释,正如评论者所提到的。从您的问题中不清楚为什么您需要 setA 采用字符串而不是 boolean 参数,但是如果您可以在 setter 上将类型更改为 boolean 值,那么这也有效。

编辑:

根据您在下面的评论,您似乎有两个选择:

写一个@XmlAdapter,或者

为字符串字段和作为计算字段的 isA 创建一个 setter/getter 对(这是我一直这样做的方式,因为它看起来更简单一些):

String a;

void setA(String);
String getA();

// calcualted field:
boolean isA() {
// or whatever your real implementation is
return a.equals("yes");
}

关于java - Jax-b 在解码时解释太多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7876493/

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