2016-08-12 37 views
3
  • 使用JAXB 2.1生成Java代碼的.xsd
  • JAXB2-基礎插件可比 用於
  • 希望有產生Fragment類來實現Comparable<Fragment>
public class Fragment implements Serializable, Comparable<Fragment> { 
    ... 
    public int compareTo(Fragment other) { 
    ..... 
    return 0; 
    } 
} 

通過以下JAXB綁定文件JAXB 2.1實施用於將所生成的類

<?xml version="1.0" encoding="UTF-8"?> 
<jxb:bindings xmlns:jxb="http://java.sun.com/xml/ns/jaxb" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc" 
    xmlns:ci="http://jaxb.dev.java.net/plugin/code-injector" 
    xmlns:inheritance="http://jaxb2-commons.dev.java.net/basic/inheritance" 
    jxb:extensionBindingPrefixes="xjc" 
    jxb:version="2.1"> 
    <jxb:bindings> 
     <jxb:globalBindings> 
      <xjc:serializable uid="12343" /> 
     </jxb:globalBindings> 
    </jxb:bindings> 
    <jxb:bindings schemaLocation="../schemas/Fragment.xsd" 
     version="1.0" node="/xs:schema"> 
     <jxb:bindings node="//xs:element[@name='Fragment']/xs:complexType">   
      <inheritance:implements>java.lang.Comparable</inheritance:implements> 
      <ci:code>   
public int compareTo(Fragment other) { 

    return fragmentVersion.compareTo(other.fragmentVersion); 
} 
      </ci:code> 
     </jxb:bindings> 
    </jxb:bindings> 
</jxb:bindings> 

能夠產生類,如下所示:

public class Fragment implements Serializable, Comparable { 
    ... 
    public int compareTo(Fragment other) { 
    return fragmentVersion.compareTo(other.fragmentVersion); 
    } 
} 

問題:正如你看到的,類爲implements Comparable,而不是implements Comparable<Fragment>產生。

當然,錯過了一些東西。任何幫助解決的讚賞。

+1

你有沒有真的試圖'<繼承:農具>的java.lang。可比較的<片段>'? – lexicore

+0

@lexicore,我試過' java.lang.Comparable '這顯示錯誤說需要結束標記。剛剛嘗試了你的建議,那很有效。這應該是一個答案,並樂意接受它。非常感謝。 – Rao

回答

3

JAXB2-Basics支持泛型。

只需使用:

<inheritance:implements>java.lang.Comparable&lt;Fragment&gt;</inheritance:imple‌​ments> 
4

雖然測試由lexicore提供的解決方案,注意到了另一種方式來解決這個問題:

<inheritance:implements><![CDATA[java.lang.Comparable<Fragment>]]></inheritance:implements>