繰り返されるアノテーションとは
同じ宣言タイプに対して同じアノテーションを複数回使用可能
簡単な例
java 8にもアノテーションを再利用するソリューションがありますが、以下のコードのように可読性はあまりよくありません:
public @interface Authority {
String role();
}
public @interface Authorities {
Authority[] value();
}
public class RepeatAnnotationUseOldVersion {
public void doSomeThing(){
}
}
別のアノテーションで重複アノテーションを保存し、使用時に重複アノテーションをstorageアノテーションAuthoritiesで拡張します:
@Repeatable(Authorities.class)
public @interface Authority {
String role();
}
public @interface Authorities {
Authority[] value();
}
public class RepeatAnnotationUseNewVersion {
public void doSomeThing(){ }
}
違いは、繰り返し可能なアノテーションAuthorityを作成するときに加えて、@Repeatable、ストレージアノテーションAuthoritiesを指して、使用すると、直接Authorityアノテーションを再利用することができます。上記の例から、java 8の内部の練習は、従来の考え方に適している、可読性が少し強いです。
まとめ
JEP120はあまり内容がなく、コードの可読性を向上させるだけの小さな機能です。今回、java 8ではアノテーションに2つの改良が加えられたので、アノテーションは以前よりもよく使われるようになると思います。