1~

Minter Coder's Blog

EK - Java Annotations (Açıklamalar) 3

2021-07-02

Repeatable Annotationlar :

JDK 8 'in birlikte , bir annotation aynı eleman üzerinde tekrar edilebilir oldu.Buna repeating (tekrar eden) annotationlar (açıklamalar) denir.Bir annotationun tekrar edilebilir olabilmesi için , @Repeatable annotaionu ile açıklanmalıdır.@Repeatable annotationu java.lang.annotation packagenin içerisinde tanımlanmıştır.Onun value fieldi tekrar edilebilir annotation için container türünü belirtir.Value fieldi bir diziden oluşur. Repeated annotatinlarına erişebilmek için getAnnotation() gibi bir method kullanılır.Örneğe bakalım hemen :

 

import java.lang.annotation.*;
import java.lang.reflect.Method;
@Retention(RetentionPolicy.RUNTIME)
@Repeatable(MyClass.class)
@interface MyAnno{
    String str();
}
@Retention(RetentionPolicy.RUNTIME)
@interface MyClass{
    MyAnno[] value();
}
public class MyFile{
    @MyAnno(str = "Kerem")
    @MyAnno(str = "Java")
    public static void myMeth(){
        try {
            Method method = MyFile.class.getMethod("myMeth");
            MyClass myClass = method.getAnnotation(MyClass.class);
            System.out.println(myClass.value()[0].str());
            System.out.println(myClass.value()[1].str());

        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        }
    }
    public static void main(String[] args) {
        myMeth();
    }
}

Açıklandığı gibi , MyAnno'nun repeatable olabilmesi için , @Repeatable annotationu ile açıklanması,işaretlenmesi gereklidir , bu da onun container annotationu gösterir.Container(Kapsayıcı) annotationumuz (açıklayıcımız) burada MyClass'dır.

 

Çıktı:

Kerem
Java