1

JAX-BJavaクラスにJavaアノテーションを追加する場合-親のクラスエントリがあり、2つの子、 BookJournalArticleがある場合、

3つのクラスすべてにこれらの注釈を追加しますか?

@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;
4

1 に答える 1

1

アノテーションXmlAccessorTypeは継承できるので、子クラスで再度宣言する必要はないと思います。

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

これはの場合には当てはまらないためXmlRootElement、各基本クラスに注釈を付ける必要があります。

アノテーションの詳細については@Inherited、javadocを参照してください。

コメントの更新:

@Retention(value=RUNTIME)つまり、クラスは実行時でもこのアノテーションを保持します。つまり、プログラムはJavaリフレクションAPIを使用して、アノテーションがクラスに存在するかどうかを確認できます。

@Target(value={PACKAGE,TYPE})これは、このアノテーションを使用して、クラス、インターフェイス、または列挙型にアノテーションを付けることができ(これはの場合value=TYPE)、パッケージレベル全体(これはの場合value=PACKAGE)でも使用できることを意味します。これがどのように役立つかを説明するこのスレッドを見ることができます。

Javadocの詳細:

于 2012-10-19T04:59:28.923 に答える