Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
77
Help us understand the problem. What is going on with this article?
@kashira2339

ちょっと特殊なJavaのアノテーション

More than 1 year has passed since last update.

特殊なアノテーション

型定義の際や、JavaDocに記述できるアノテーション(タグ)について紹介、
というよりメモ。

アノテーションを独自定義する

interface

アノテーションの宣言を行う。

@interface OriginAnnotation {
    String value();
}

メタアノテーション

Documented

型の宣言に@Documentedが付加されていれば、
その注釈は注釈付き要素の公開APIの一部となる。

Retention

アノテーションの読み込みタイミングを指定できる。
java.lang.annotation.RetentionPolicyから選択

  • CLASS: コンパイル時にクラスファイルに記録される。実行時にVMに読み込まれない。
  • RUNTIME: 実行時にVMに読み込まれる
  • SOURCE: コンパイル時に破棄

Target

注釈型が適用可能なプログラム要素の種類を示す。
java.lang.annotation.ElementTypeから選択

  • ANNOTATION_TYPE: アノテーションに適用可
  • CONSTRUCTOR: コンストラクタに適用可
  • FIELD: フィールドに適用可
  • LOCAL_VARIABLE: ローカルに適用可
  • METHOD: メソッドに適用可
  • PACKAGE: パッケージに適用可
  • PARAMETER: 引数に適用可
  • TYPE Class、Interface、Enum可

上のをAnnotationたちを合わせる

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
@interface OriginalAnnotation {
    String value();
}

JavaDocタグ(JavaDoc内で利用するアノテーション)

author

筆者を示す。

/**
 * @author kashira2339
 */

param

引数の変数名と説明。

/**
 * @param email 会員のEメールアドレス
 */

return

返り値の説明。

/**
 * @return 検索結果
 */

throws, exception

メソッド内で発生する例外のクラス名、及びその説明を記述する。

/**
 * @exception IOException 文字入力エラー
 */

link

JavaDoc内に参照可能なリンクを作成する。

/**
 * @exception {@link IOException} 文字入力エラー
 */

literal

テキスト向け。不等号を書ける。

/**
 * {@literal A<B>}
 */

code

JavaDoc内にコードを書く時。

/**
 * {@code null}
 */

inheritDoc

オーバーライドしたメソッドのJavaDoc部分に付与すると、
スーパークラスにて記述されたJavaDocを参照できる。

/**
 * {@inheritDoc}
 */
@Override
public String getString() {
    return path;
}

まとめ

Javaを書く中で見慣れないアノテーションに出会ったら、
その度追記する予定。

77
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
kashira2339
株式会社サイバー・バズでScalaとTypeScriptをよく使うエンジニアです。
cyberbuzz
SNSマーケティングサービスや、”買いたい”に出会えるメディア「to buy」などの開発・運用をしています。

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
77
Help us understand the problem. What is going on with this article?