Java / 基礎 / アノテーション / 作る

Java / 基礎 / アノテーション / 作る

基本

このように作るだけでいい

public @interface HogeAnno {
}

内部アノテーション

やる理由があるかわからんが、このようなことも許されるようだ。

public class Hoge {
    @PiyoAnno
    public void dododo() {
    }
    public @interface PiyoAnno {
    }
}

クラス内部のアノテーションをクラス自身にはつけることはできないようだ。

アノテーションを付けられる対象を限定する

何もしなければアノテーションが付けられる場所ならどこでも付けられるのだが、 その場所を明示的に限定することができる。

このように書く

import java.lang.annotation.ElementType;
 
@Target({
    ElementType.TYPE,
    ElementType.FIELD
})
public @interface HogeAnno {
}

この ElementType をつけたい対象を書くということになる。

引数を定義する

引数はこのようにメソッド定義のように書く

public @interface HogeAnno {
    String value();
    String p1();
    String p2();
}

このように default 値を設定することで引数の省略に対応できる。

public @interface HogeAnno {
    String value() default "hoge";
    String p1() default "piyo";
    String p2() default "";
}

ちょっと違うがこのデフォルト値の設定によってアノテーションのオーバーロードのようなことができるということだ。

java/basic/annotation/create.txt · 最終更新: 2021-02-01 15:44 by ore