gpt4 book ai didi

java - 从父级继承的元素的 JAX-B 注释

转载 作者:太空宇宙 更新时间:2023-11-04 08:00:08 25 4
gpt4 key购买 nike

为 Java 类添加 JAX-B Java 注释时 - 如果我有一个父 Class Entry,有两个子 BookJournalArticle

我会为所有三个类添加这些注释吗:

@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement

即:

@XmlSeeAlso({au.com.library.Book.class, au.com.library.JournalArticle.class})
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement
public abstract class Entry implements Serializable{


private static final long serialVersionUID = -1895155325179947581L;

@XmlElement(name="title")
protected String title;
@XmlElement(name="author")
protected String author;
@XmlElement(name="year")
protected int year;

@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement
public class Book extends Entry {

@XmlElement(name="edition")
private String edition;
@XmlElement(name="publisher")
private String publisher;
@XmlElement(name="placeOfPublication")
private String placeOfPub;

@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement
public class JournalArticle extends Entry {

@XmlElement(name="journalTitle")
private String journalTitle;
@XmlElement(name="volume")
private String volume;
@XmlElement(name="issue")
private String issue;
@XmlElement(name="pageNumbers")
private String pgNumbers;

最佳答案

注释XmlAccessorType可以继承,所以我相信不必在子类上再次声明它。

@Inherited
@Retention(value=RUNTIME)
@Target(value={PACKAGE,TYPE})
public @interface XmlAccessorType

XmlRootElement 的情况并非如此,因此您必须用它来注释每个基类。

您可以在 @Inherited 上找到更多信息javadoc 上的注释。

更新您的评论:

@Retention(value=RUNTIME) 表示该类即使在运行时也保留该注解,即程序可以使用 Java 反射 API 来检查该注解是否存在于类上。

@Target(value={PACKAGE,TYPE}) 表示此注释可用于注释类、接口(interface)或枚举(这适用于 value=TYPE),也可用于整个包级别(这适用于 value=PACKAGE)。您可以看到this thread解释这有何用处。

有关 Javadoc 的更多信息:

关于java - 从父级继承的元素的 JAX-B 注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12967523/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com