注目記事

【Javaコード入門】アノテーション_②@interface命令

独自のアノテーションを定義する – @interface命令

@intarface name {
 definiton
}
 name:アノテーション名
 definition:アノテーションの定義

@interface命令を利用することで、アノテーションを自分で定義することもできます。たとえば以下は、Versionアノテーションを定義する例です。

  1. @Retention(RetentionPolicy.RUNTIME)
  2. @Target(ElementType.METHOD)
  3. @Inherited
  4. public @interface Version {
  5.   double value();
  6. }

アノテーション定義では、アノテーションそのものの情報を定義するためのアノテーション(メタアノテーション)を付与できます。以下に利用できる主なメタアノテーションをまとめます。

主なメタアノテーション
アノテーション 概要
@Target アノテーションを付与できる対象(TYPE、METHOD、FIELD、PARAMETERなど)
@Rentention アノテーション情報が維持される範囲(SOURCE、CLASS、RUNTIME)
@Inherited アノテーション情報がサブクラスにも継承されるか

@interface命令の配下には、アノテーションで利用できる属性を指定します。属性は、抽象メソッドと同じく、型と名前のセットで表します。
このように定義された属性は、一般的に「@アノテーション名(属性名=値,…)」の形式で指定できます。ただし、属性名がvalueのときは名前を省略して「@アノテーション名(値)」のように記述できます。
たとえば、以下はVersionアノテーションを指定したannotationTestメソッドの例です。

AnnotationSample.java

  1. package com.example.mynavi.object;
  2.  
  3. public class AnnotationSample {
  4.   @Version(1.0)
  5.   public void annotationTest() {
  6.     System.out.println("Released");
  7.   }
  8. }
アノテーション_目次
標準アノテーション
@interface命令
アノテーションを利用する

監修

山田祥寛(有限会社 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万部を超える。