Java 无法让JAXB使用简单的示例处理接口
我正在尝试第3.2.1节中所示的JAXB接口的简单示例,但它不适合我。我使用的是最新的JDK 1.8_70,没有使用任何特殊的库。为了完整性起见,代码:Java 无法让JAXB使用简单的示例处理接口,java,xml,jaxb2,Java,Xml,Jaxb2,我正在尝试第3.2.1节中所示的JAXB接口的简单示例,但它不适合我。我使用的是最新的JDK 1.8_70,没有使用任何特殊的库。为了完整性起见,代码: @XmlRootElement class Zoo { @XmlAnyElement public List<Animal> animals; } interface Animal { void sleep(); void eat(); ... } @XmlRootElement class Dog impl
@XmlRootElement
class Zoo {
@XmlAnyElement
public List<Animal> animals;
}
interface Animal {
void sleep();
void eat();
...
}
@XmlRootElement
class Dog implements Animal { ... }
@XmlRootElement
class Lion implements Animal { ... }
编辑:发布的JAXBContext.newInstance代码:
Zoo zoo = new Zoo();
zoo.animals = new ArrayList<Animal>();
zoo.animals.add( new Cat() );
zoo.animals.add( new Dog() );
zoo.animals.add( new Dog() );
JAXBContext ctx = JAXBContext.newInstance(Zoo.class);
Marshaller marshaller = ctx.createMarshaller();
marshaller.marshal(zoo, System.out);
尝试在提供给JAXBContext.newInstance的列表中指定其他类 将@XmlSeeAllow注释应用于Zoo类也应该有效
@XmlRootElement
@XmlSeeAlso({Cat.class, Dog.class})
class Zoo {
...
}
JAXBContext ctx = JAXBContext.newInstance(Zoo.class, Cat.class, Dog.class);
@XmlRootElement
@XmlSeeAlso({Cat.class, Dog.class})
class Zoo {
...
}