Java:JAXB并使用char

Kor*_*aga 8 java primitive java-metro-framework jaxb char

我正在使用JAXB开发一个项目,但是我遇到了一个JAXB和char数据类型的小问题.

char gender = 'M';
Run Code Online (Sandbox Code Playgroud)

编组后转换为:

<gender>77</gender>
Run Code Online (Sandbox Code Playgroud)

所以我认为char被映射到整数,但我只想将它映射到String.我怎样才能做到这一点?它甚至可能吗?

ska*_*man 6

经过一些实验,似乎没有办法配置JAXB来正确处理原始字符.不过,我很难接受它.

我已经尝试定义一个XmlAdaptor尝试并将其强制转换为String,但运行时似乎只接受在对象类型上注释的适配器,而不是基元.

我能想到的唯一解决方法是用char标记char字段@XmlTransient,然后编写获取和设置值为字符串的getter和setter:

   @XmlTransient
   char gender = 'M';

   @XmlElement(name="gender")
   public void setGenderAsString(String gender) {
      this.gender = gender.charAt(0);
   }

   public String getGenderAsString() {
      return String.valueOf(gender);
   }
Run Code Online (Sandbox Code Playgroud)

不是很好,我会授予你,但实际上没有将你的char字段改为String,这就是我所拥有的.