+1 امتیاز
قبل در برنامه نویسی توسط (9 امتیاز)
ویرایش شده قبل توسط

تو دنیای جاوا از 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;
   }

لطف میکنید بهم این موارد رو یاد بدید

1 پاسخ

0 امتیاز
قبل توسط (1.1هزار امتیاز)

Annotation در جاوا نوعی Metadata یا اطلاعات تکمیلی است که می توانیم به کد های جاوا اضافه کنیم. Annotation ها می توانند برای کلاس ها، متد ها، فیلد ها، پارامتر ها و پکیج ها تعریف شوند و سپس در زمان runtime یا compile time پردازش شوند و و بر اساس Annotation ها قرار گرفته رفتار خاصی انجام شود.

Annotation ها با استفاده از @interface تعریف می شوند و مشخص می شود این Annotation را در کجا و به چه صورت می توان استفاده کرد. پس از استفاده از Annotation ها در کد های جاوا، می توانیم با استفاده از کتابخانه های پردازش Annotation یا Reflection به پردازش Annotation بپردازیم.

کاربرد اصلی Annotation در Framework ها است که به توسعه دهندگان اجازه می دهند با استفاده از Annotation ها رفتار رفتار های مورد نظر خود را تعریف کنند (مثل موردی که شما بیان کردید).

اطلاعات بیشتر

قبل توسط (9 امتیاز)
الان من اینا رو وقتی برداشتم هیچ اتفاق نیفتاد. به نظر میاد این موراد کار اضافی هستش. نشانه گذاری برای این موارد کاربردش تو کدهایی که گذاشتم چی میتونه باشه؟ اصلا نمیفهمم
قبل توسط (1.1هزار امتیاز)
ممکنه اینطور باشه بعضی از Annotation مثل @override اگرم نباشن برنامه کار میکنه ولی بودنشون باعث یکسری کامپایل چک میشه که کمک می کنه ولی تمام انوتیشن ها اینطور نیستن. کلا انوتیشن ها خودشون کاری نمی کنن و یکی اونارو می خونه و کاری می کنه. مثل کلاس و شئ نیستن.

سوالات مشابه

+2 امتیاز
3 پاسخ 3.0هزار بازدید
سوال شده 10 سال قبل در برنامه نویسی توسط bahrambb (308 امتیاز)
+1 امتیاز
1 پاسخ 736 بازدید
0 امتیاز
1 پاسخ 1.2هزار بازدید
0 امتیاز
1 پاسخ 926 بازدید
+1 امتیاز
1 پاسخ 413 بازدید
...