JAXB - Немаршалинг полиморфных объектов

Мне дан XML, который выглядит (конечно, намного больше атрибутов):

<inventory>
  <item kind="GRILL" tag=123 brand="WEBER"/>
  <item kind="CAR" tag=124 make="FORD" model="EXPLORER" />
</inventory>

примерно с дюжиной различных типов. Я использую аннотации для сопоставления с Java-классами, которые выглядят следующим образом:

@XmlRootElement(name="inventory")
public class Inventory {
  @XmlElement(name="item")
  public List<Item> itemList = new LinkedList<Item>;
}
abstract public class Item {
  @XmlAttribute public int tag;
}
public class Grill extends Item {
  @XmlAttribute public string brand;
}
public class Car extends Item {
  @XmlAttribute public string make;
  @XmlAttribute public string model;
}

Как я могу заставить JAXB создавать подклассовые объекты Item на основе поля "kind"?

5
задан dave 30 March 2011 в 20:30
поделиться