11 Haziran 2018 Pazartesi

@Target Anotasyonu

Giriş
Şu satırı dahil ederiz.
import java.lang.annotation.Target;
Açıklaması şöyle.
Creating an annotation requires two pieces of information: (1) a retention policy and (2) a target.
A retention policy specifies how long, in terms of the program lifecycle, the annotation should be retained for. 

...
The target of an annotation specifies which Java constructs an annotation can be applied to. 
Şu değerleri alabilir.
Annotation Type
Constructor
Field
Local variable
Method
Module
Package
Parameter
Type
Type Parameter
Type Use

ElementType.ANNOTATION_TYPE
@Transactional anotasyonu ElementType.TYPE olduğu için diğer anotasyonlar içinde kullanılabilir. Şöyle yaparız.
/**
 * Shortcut and more descriptive "alias" for
 {@code @Transactional(propagation = Propagation.MANDATORY)}.
 */
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Transactional(propagation = Propagation.MANDATORY)
public @interface RequiresExistingTransaction {
}
ElementType.METHOD
Örnek
Şöyle yaparız
@Target(ElementType.METHOD)
public @interface NotNull { }

@Target(ElementType.METHOD)
public @interface Other { }

public static @NotNull @Other My.Builder createBuilder() {
    return new My.Builder();
}
ElementType.TYPE
Herhangi bir yerde - class,interface,method,field,enumeration ve diğer anotasyonlar - bu anoyasyon kullanılabilir.
Örnek
Şöyle yaparız.
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface NamedItem {
    String value();
}
ElementType.TYPE_USE
Örnek
Şöylee yaparız
@Target(ElementType.TYPE_USE)
public @interface NotNull { }

@Target(ElementType.TYPE_USE)
public @interface Other { }

public static My.@NotNull @Other Builder createBuilder() {
    return new My.Builder();
}


Hiç yorum yok:

Yorum Gönder