2016-11-05 58 views
0

我遇到了使用JAX-B生成enum的問題。 我們有一個架構中的語言代碼,通過案例分隔相同的元素。 因此,例如,我們有de和一個入口與DE與所有其他語言代碼導致組合的emun與像模式:JAX-B使用相同元素生成枚舉

/** 
* Afar 
* 
*/ 
@XmlEnumValue("aa") 
VALUE_1("aa"), 

/** 
* Afar 
* 
*/ 
@XmlEnumValue("AA") 
VALUE_2("AA"), 

試圖訪問一個值時,什麼是有點問題通過VALUE_X命名。 有沒有辦法來防止這種情況。 我期待enum的值如AA,DE等我知道他們必須是唯一的。在這種情況下唯一的區別就是如何處理。

+1

@davidxxx我從公司的xsd模式文件生成。 – LostKatana

+1

@dur我的同事使用xjc yes。 – LostKatana

回答

2

如果您的問題只是命名VALUE_1,您可以修復通過自定義枚舉成員的名字,比如說,小寫的條目:

<jaxb:bindings schemaLocation=".../myxsd" node="/xs:schema"> 
    <jaxb:bindings node="xs:simpleType[@name='MyLangType']"> 
     <jaxb:typesafeEnumClass> 
      <jaxb:typesafeEnumMember name="LOWER_AA" value="aa"/> 
      <!-- ... --> 
     </jaxb:typesafeEnumClass> 
    </jaxb:bindings> 
</jaxb:bindings> 

您也可以考慮使用jaxb:javaType直接映射你的類型java.util.Locale

+0

謝謝lexicore我會在星期一回到公司時嘗試解決方案。 – LostKatana

+0

在編寫程序生成我的類型安全綁定之後就像一個魅力一樣工作,因爲這是很多語言代碼:-) – LostKatana