تو دنیای جاوا از annotation تا الان نشده که خودم مورد جدید بنویسم. هر چند مقالات متنوعی نوشته شده ولی باز یه کم ابهاماتی بود که گفتم از خدمت دوستان بپرسم. تو یکی از کتابخونه های اندروید به این مورد برخورد کردم ولی با اون مقالاتی که مطالعه کرده بودم متناقض بودن. مثلا:
/**
* Denotes that an integer parameter, field or method return value is expected
* to be a color resource reference (e.g. {@code android.R.color.black}).
*/
@Documented
@Retention(CLASS)
@Target({METHOD, PARAMETER, FIELD, LOCAL_VARIABLE})
public @interface ColorRes {
}
اینجا Documented هم مثل همین کلاس بدون بدنه داخل متند هستش و اومده اینطوری ازش استفاده کرده:
@ColorRes
private int mRevealColor;
یا به این صورت:
@ColorRes
private int revealColor = android.R.color.holo_purple;
همین!! این نوع استفاده به چه دردی میخوره و چه اتفاقی می افته؟ فقط تعریف شده. این مورد رو اصلا نمیفهمم.
یا این مورد مثلا:
@Retention(RetentionPolicy.SOURCE)
@IntDef({ANIMATION_TYPE_BLOOM, ANIMATION_TYPE_TUMBLR})
public @interface ANIMATION_TYPE {
}
اینطوری هم ازش استفاده کرده:
public Builder animationType(@ANIMATION_TYPE int type) {
this.animationType = type;
return this;
}
لطف میکنید بهم این موارد رو یاد بدید