类javax.security.auth.x500.X500Principal
是最终的,并且(当然)没有使用JAXB注释注释?那么如何将其作为更大对象图的一部分进行编组呢?我想用它的name
属性值替换它。
修改
解决方案很简单:
final class X500PrincipalXmlAdapter
extends XmlAdapter<String, X500Principal> {
@Override public X500Principal unmarshal(String name) {
return new X500Principal(name);
}
@Override public String marshal(X500Principal principal) {
return principal.getName();
}
}
实际上,我想知道为什么JAXB允许我使用非公共XMLAdapter类,但我当然更喜欢它。
答案 0 :(得分:1)
您可以在此用例中使用XmlAdapter
。 XmlAdapter
用于将不可映射的对象转换为可映射的对象。使用XmlAdapter
注释在字段/属性上配置@XmlJavaTypeAdapter
。