Я нашел несколько других вопросов, которые задают это по-другому, но ни один из ответов на эти вопросы не работает.Либо сайты, на которые они ссылаются, устарели, либо они не предназначены для JAXB2.
Мне нужно, чтобы более чем несколько сгенерированных классов наследовали от общего интерфейса, поскольку все они имеют метод .getName()
.
Вместо того, чтобы иметь огромный if(o instanceof XXX)
для каждого из типов, блок, который я предпочел бы просто проверить на этот общий Interface
, приведя к нему и вызвав .getName()
.
Вот мой интерфейс
package com.mycompany;
public interface Nameable
{
public String getName();
}
, и вот что я добавляю в мой файл привязок .xjb
<jxb:bindings version="2.1"
xmlns:xsi="http://www.w3.org/2000/10/XMLSchema-instance"
xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
xmlns:jxb="http://java.sun.com/xml/ns/jaxb"
xmlns:inheritance="http://jaxb2-commons.dev.java.net/basic/inheritance"
jxb:extensionBindingPrefixes="xjc inheritance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
...
<jxb:bindings node="//xsd:element[@name='container']">
<inheritance:implements>com.mycompany.Nameable</inheritance:implements>
</jxb:bindings>
Он ничего не добавляет к сгенерированным классам.
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "", propOrder = {
"contents"
})
@XmlRootElement(name = "container")
public class Container implements Cloneable, CopyTo, Equals, HashCode, MergeFrom, ToString
{
...
}
Что такое магическое заклинание, чтобы этот интерфейс был добавлен в список?