# JAXB und abstrakte Klasse(n)



## evil_one (5. Apr 2016)

Hallo,
ich kämpf seit ein paar Tage mit Schema Dateien mit deren Hilfe ich Java Objekte erstellen möchte. Diese XSD sind hier zu finden http://www.osci.de/xmeld211/

Die Jaxb Klassen liesen sich ohne Probleme mit dem Maven Plugin generieren.

```
<groupId>org.jvnet.jaxb2.maven2</groupId>
<artifactId>maven-jaxb2-plugin</artifactId>
<version>0.13.0</version>
```
Nun mein Problem:
Es werden auch abstrakte Klassen erzeugt. Wenn ich nun konkrete XML Nachrichten unmarshaln möchte bekommen ich eine "javax.xml.bind.UnmarshalException: Unable to create an instance" da JAXB versucht eine Abstrakte Klasse zu instantiieren.

Hier ein wenig Code der mir Kopfzerbrechen bereitet:

```
@XmlRootElement(name = "xmeldit.datenlieferung.1100")
public class XmelditDatenlieferung1100
    extends TypeNachrichtG2G
    implements Serializable, ToString2
```


```
public class TypeNachrichtG2G
    extends NachrichtG2G
    implements Serializable, ToString2
```
Bis hier her ist alles Toll, die Klassen werden einfach abgeleitet.
In der folgenden Klassen wird nun "protected NachrichtenkopfG2G nachrichtenkopf" verwendet.

```
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Nachricht.G2G", propOrder = {
    "nachrichtenkopf"
})
@XmlSeeAlso({
    NachrichtG2GRueckweisung.class,
    TypeNachrichtG2G.class
})
public abstract class NachrichtG2G implements Serializable, ToString2
{

    private final static long serialVersionUID = 5000000L;
    @XmlElement(required = true)
    protected NachrichtenkopfG2G nachrichtenkopf;
```
NachrichtenkopfG2G ist ebenfalls abstract!

```
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Nachrichtenkopf.G2G", propOrder = {
    "identifikationNachricht",
    "leser",
    "autor"
})
@XmlSeeAlso({
    TypeNachrichtenkopfG2G.class,
    NachrichtenkopfG2GXInneres.class
})
public abstract class NachrichtenkopfG2G implements Serializable, ToString2
```

Wie sage ich nun bei der Generierung der Klassen, das bei der Instantiierung TypeNachrichtenkopfG2G oder NachrichtenkopfG2GXInneres verwendet werden muss.
Ich habe an "CustomBindung" oder irgend einen Adapter gedacht. Weiß aber nicht wie ich da anfange. :-(

Ich hoffe irgend jemand kann mir einen Tip geben.


----------

