(1) Javaのアノテーションとは?自作の手順やフィールド値の取得方法もご紹介
(1-1) アノテーションとは?
(1-2) アノテーションの種類
(1-3) 自作アノテーションの作り方や使い方
(1) Javaのアノテーションとは?自作の手順やフィールド値の取得方法もご紹介
(1-1) アノテーションとは?
(1-1-1) 一言でいうと
Javaのコードに対してメタデータを付与するための機能です。Javaに標準で備わっている有名な例では、メソッドのオーバーライド時に付与する「@Override」アノテーションなど見たことがある人が多いのでは?(@Overrideの場合はJavaにビルドインされたアノテーションのため、即座に使える)。
(1-1-2) 特徴
このアノテーションの特徴として基本的に「コンパイル後のプログラムの動作には影響しない」事が挙げられます(RUNTIME時も有効にすれば別)。とはいえ、コンパイラからの扱いには影響するため、完全なコメントではない点も注意が必要です。例えば「@Override」アノテーションを付けたメソッドが正しくオーバーライド出来ていない場合はコンパイル時に警告メッセージが出るので、コメントとは明確に異なります。
そしてアノテーションは自作で定義&使用する事もでき、クラス、メソッド、インスタンス変数、コンストラクタ、Javaパッケージ、パラメータ)など様々な要素に対して付与する事ができ、全てのアノテーションは「java.lang.annotation.Annotation」インターフェイスを継承します。
(1-2) アノテーションの種類
ここからは自作のアノテーションの大まかな種類についてご紹介します。
(1-2-1) マーカーアノテーション
メンバを持たず、データ等は構成しない種類のアノテーションです。マーカーとして印を付けるのみのアノテーションです。
//(構文) @interface [カスタムアノテーション名]{} //(定義例) @interface MyAnnotation{} //(使用例) @MyAnnotation
(1-2-2) 単一値アノテーション
1つのメソッド(のシグニチャ)のみを含むアノテーションで、メンバの宣言をする際に簡易的な記述を使用できます。具体的にはメンバの名前を記述する必要がなく、値のみを記述すればOKです(性格には名前は「value」で決め打ち)。
//(定義例) @interface MyAnnotation{ int value() default 0; } //(使用例) @MyAnnotation(value=999)
(1-2-3) 複数値アノテーション
複数のメソッド(のシグニチャ)を持つアノテーションです。
//(定義例) @interface MyAnnotation{ int value1() default 1; String value2() default ""; String value3() default "abcde"; } // (使用例) @MyAnnotation(value1=99,value2="Rainbow Planet",value3="Michael")
(1-3) 自作アノテーションの作り方や使い方
自作のアノテーションの作り方については、少し長くなるので別記事(↓)にてご紹介しています。
Javaのアノテーションを自作する方法をご紹介(サンプルプログラム付き)
https://rainbow-engine.com/java-custom-annotation-howto/