独自のアノテーションを定義する – @interface命令
@intarface name {
definiton
}
name:アノテーション名
definition:アノテーションの定義
@interface命令を利用することで、アノテーションを自分で定義することもできます。たとえば以下は、Versionアノテーションを定義する例です。
- @Retention(RetentionPolicy.RUNTIME)
- @Target(ElementType.METHOD)
- @Inherited
- public @interface Version {
- double value();
- }
アノテーション定義では、アノテーションそのものの情報を定義するためのアノテーション(メタアノテーション)を付与できます。以下に利用できる主なメタアノテーションをまとめます。
| 主なメタアノテーション | |
|---|---|
| アノテーション | 概要 |
| @Target | アノテーションを付与できる対象(TYPE、METHOD、FIELD、PARAMETERなど) |
| @Rentention | アノテーション情報が維持される範囲(SOURCE、CLASS、RUNTIME) |
| @Inherited | アノテーション情報がサブクラスにも継承されるか |
@interface命令の配下には、アノテーションで利用できる属性を指定します。属性は、抽象メソッドと同じく、型と名前のセットで表します。
このように定義された属性は、一般的に「@アノテーション名(属性名=値,…)」の形式で指定できます。ただし、属性名がvalueのときは名前を省略して「@アノテーション名(値)」のように記述できます。
たとえば、以下はVersionアノテーションを指定したannotationTestメソッドの例です。
AnnotationSample.java
- package com.example.mynavi.object;
- public class AnnotationSample {
- @Version(1.0)
- public void annotationTest() {
- System.out.println("Released");
- }
- }
監修
山田祥寛(有限会社 WINGSプロジェクト)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NEC にてシステム企画業務に携わるが、2003年 4 月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト(https://wings.msn.to/)」の代表でもある。主な著書に『改訂 3 版JavaScript 本格入門』(技術評論社)、「独習シリーズ(C#・Python・PHP・Ruby・JSP&サーブレットなど)」(翔泳社)、「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravel など)」(Amazon Kindle)など。売り上げの累計は100万部を超える。