2016-08-12 2 views
3
  • mit JAXB 2.1 Java-Code zu erzeugen, aus XSD
  • jaxb2-basics-Plug-in verwendet wird
  • will generiert haben Klasse Fragment implementieren Comparable<Fragment>
public class Fragment implements Serializable, Comparable<Fragment> { 
    ... 
    public int compareTo(Fragment other) { 
    ..... 
    return 0; 
    } 
} 

Mit den unten jaxb Bindungen DateiJAXB 2.1 Implementierung Vergleichbare <T> für die generierte Klasse

<?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> 

Able unter Klasse als Show zu generieren:

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

Ausgabe: Wie Sie sehen, ist die Klasse als implements Comparable statt implements Comparable<Fragment> erzeugt.

Bin sicher, etwas fehlt. Jede Hilfe zur Lösung wird geschätzt.

+1

Haben Sie tatsächlich versucht ' java.lang. Vergleichbar <Fragment> '? – lexicore

+0

@lexicore, versuchte ich ' java.lang.Comparable ', die Fehler zeigte, die Notwendigkeit, schließendes Tag. Ich habe deinen Vorschlag ausprobiert und das funktioniert. Das sollte eine Antwort sein und es gerne annehmen. Ich danke dir sehr. – Rao

Antwort

3

JAXB2-Basics unterstützen Generika.

Verwenden Sie einfach:

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

Während die Lösung von lexicore bereitgestellt Prüfung, eine andere Art und Weise das Problem zu beheben bemerkt:

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