
- بواسطة x32x01 ||
يعني إيه Annotations في Java؟
تخيل إنك بتكتب كود Java وعايز تضيف شوية “ملاحظات” أو “علامات” للـ Compiler أو الـ JVM من غير ما تغيّر الكود نفسه!هنا بييجي دور Annotations - وهي ببساطة عبارة عن Metadata يعني "بيانات عن بيانات"

هي مش بتأثر بشكل مباشر على الـ Runtime، لكنها بتوجّه الكومبيلر أو الـ Frameworks (زي Spring أو Hibernate) إزاي يتعاملوا مع الكود بتاعك.
طيب بتستخدم في إيه الـ Annotations؟
تنظيم الكود:
- بتضيف معلومات إضافية للكود بطريقة منظمة وسهلة الفهم.
تسهيل التعامل مع الـ Frameworks:
- Frameworks زي Spring وHibernate بيعتمدوا عليها بشكل أساسي لتحديد الوظائف والـ Configurations.
تحسين الأداء وتقليل الأخطاء:
- بدل زمان لما كنا بنستخدم ملفات XML، النهارده الـ Annotations بتخلي الإعدادات جزء من الكود نفسه، وبتسهل عمليات الـ Validation.
أنواع الـ Annotations في Java
فيه نوعين رئيسيين من الـ Annotations:Built-in Annotations (الجاهزة من Java نفسها)
@Override:بتتأكد إنك بتعمل Override لمِيثود موجودة أصلًا

Java:
@Override
public String toString() {
return "Example";
}
@Deprecated:
بتستخدم لو فيه ميثود أو كلاس قديم وعايز تحذر المبرمجين إنهم ما يستخدمهوش.
@SuppressWarnings:
بتقول للكومبيلر “سيب التحذير ده وماتزعجنيش بيه”

مفيدة جدًا لما تكون عارف الخطأ ومتعمد تتجاهله.
Custom Annotations (اللي بتعملها بنفسك)
لو الـ Built-in مش كفاية، تقدر تعمل الـ Annotation الخاصة بيك 
Java:
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface MyAnnotation {
String value();
}
إزاي بتشتغل الـ Annotations؟
- Retention:
- بتحدد الـ Annotation هتكون موجودة فين - في الـ Source، ولا Class، ولا وقت الـ Runtime.
- Target:
- بتقول الـ Annotation دي هتتطبق على إيه؟ (Class, Method, Field, Parameter, إلخ).
- Processing:
- ممكن تستخدم Reflection علشان تفسر وتتعامل مع الـ Annotation أثناء التشغيل (Runtime).
مثال عملي بسيط
لو عندك كلاس بيعمل Validation على بيانات المستخدم: Java:
public class User {
@NotNull
private String name;
}
يعني الكود نفسه مابيعملش الفحص، لكن الـ Annotation بتوجه الأداة إنها تعمل ده

طب ليه الـ Annotations مهمة؟
- بتقلل الكود اللي بتكتبه (Less Boilerplate).
- بتخلي الكود منظم وواضح أكتر.
- بتسهل التعامل مع الأدوات والـ Frameworks الحديثة.
- بتخليك تقدر تضيف Configurations مباشرة من الكود بدل ملفات خارجية.
نصايح مهمة لو هتعمل Custom Annotations
- استخدمها بحذر، لأنها بتأثر على Maintainability بتاعة الكود.
- خليك واضح في الهدف منها ومتعملش Annotations لمجرد إنك تقدر تعملها.
- دايمًا فكّر إن الكود هيتقري بعد كده من مطورين تانيين، فخليها بسيطة وواضحة.
خلاصة سريعة
الـ Annotations هي طريقة ذكية تضيف بيها معلومات للكود من غير ما تغيّر سلوكه.بتساعد الـ Java والـ Frameworks إنها تفهم الكود بشكل أوضح وأكتر تنظيم.
يعني لو عايز كودك يكون منظم، واضح، وسهل التوسيع - استخدم الـ Annotations

التعديل الأخير: