x32x01
أدارة أكتب كود
- بواسطة x32x01 ||
يعني إيه Annotations في الـJava ؟
تخيل إنك بتكتب كود، وعايز تضيف "ملاحظات" أو "علامات" للـ Compiler أو الـ JVM عشان تفهم حاجة معينة من غير ما تغير الكود نفسه. هنا بتظهر Annotations.
هي ببساطة Metadata بتضيفها للكود، يعني "بيانات عن بيانات". مش بتأثر على الـ Runtime مباشرة، لكنها بتوجّه الكومبيلر أو أدوات معينة (زي Frameworks) ازاي تتعامل مع الكود بتاعك.
بتساعدك تضيف معلومات إضافية عن الكود بطريقة منظمة.
2. تسهيل التعامل مع Frameworks:
لو استخدمت Spring أو Hibernate، هتلاقيهم بيعتمدوا على الـ Annotations بشكل كبير عشان تحدد الوظائف.
3. تحسين أداء الكود:
بتستخدم عشان تعمل Validations أو تحدد الـ Configurations بدل فايلات XML زمان.
الـ Java نفسها بتوفر Annotations جاهزة زي:
ودي اللي بتأكد إنك بتعمل Override لميثود موجودة أصلًا.
لو حاجة في الكود قديمة وبتحذر المطورين ما يستخدموهاش.
بتخلي الكومبيلر يتجاهل تحذيرات معينة.
النوع التاني Custom Annotations:
لو الـ Built-in مش كفاية، ممكن تعمل الـ Annotation الخاص بيك زي كده:
تحدد الـ Annotation ده موجود فين (Source, Class, Runtime).
Target:
تحدد الـ Annotation بيتطبق على إيه (Class, Method, Field, etc.).
Processing:
ممكن تستخدم Reflection عشان تفسر الـ Annotation أثناء الـRuntime.
مثال عملي بسيط:
لو بتعمل Validation على User Input:
بس Framework زي Spring بيشوف الـAnnotation
@NotNull وبيعمل Validation
أوتوماتيك على القيمة.
ليه مهمة؟
- بتقلل الكود اللي بتكتبه
(Less Boilerplate).
- بتخلي الكود Organized.
- بتفتح الباب لاستخدام Tools وFrameworks بشكل أكتر كفاءة.
نصيحة لو هتعمل Custom Annotations، فكر كويس لأنها بتأثر على الـ Maintainability بتاعة الكود.
استخدمها لما تكون محتاج تضيف معلومات للكود بوضوح وبدون تعقيد.
تخيل إنك بتكتب كود، وعايز تضيف "ملاحظات" أو "علامات" للـ Compiler أو الـ JVM عشان تفهم حاجة معينة من غير ما تغير الكود نفسه. هنا بتظهر Annotations.
هي ببساطة Metadata بتضيفها للكود، يعني "بيانات عن بيانات". مش بتأثر على الـ Runtime مباشرة، لكنها بتوجّه الكومبيلر أو أدوات معينة (زي Frameworks) ازاي تتعامل مع الكود بتاعك.
طيب بتستخدم في إيه؟
1. تنظيم الكود:بتساعدك تضيف معلومات إضافية عن الكود بطريقة منظمة.
2. تسهيل التعامل مع Frameworks:
لو استخدمت Spring أو Hibernate، هتلاقيهم بيعتمدوا على الـ Annotations بشكل كبير عشان تحدد الوظائف.
3. تحسين أداء الكود:
بتستخدم عشان تعمل Validations أو تحدد الـ Configurations بدل فايلات XML زمان.
أنواع Annotations في الـJava
1. Built-in Annotations:الـ Java نفسها بتوفر Annotations جاهزة زي:
Code:
@Override:
Code:
@Override
public String toString() {
return "Example";
}
Code:
@Deprecated:
Code:
@SuppressWarnings:
النوع التاني Custom Annotations:
لو الـ Built-in مش كفاية، ممكن تعمل الـ Annotation الخاص بيك زي كده:
Code:
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface MyAnnotation {
String value();
}
طيب الـ Annotations دي بتشتغل إزاي؟
Retention:تحدد الـ Annotation ده موجود فين (Source, Class, Runtime).
Target:
تحدد الـ Annotation بيتطبق على إيه (Class, Method, Field, etc.).
Processing:
ممكن تستخدم Reflection عشان تفسر الـ Annotation أثناء الـRuntime.
مثال عملي بسيط:
لو بتعمل Validation على User Input:
Code:
public class User {
@NotNull
private String name;
}
بس Framework زي Spring بيشوف الـAnnotation
@NotNull وبيعمل Validation
أوتوماتيك على القيمة.
ليه مهمة؟
- بتقلل الكود اللي بتكتبه
(Less Boilerplate).
- بتخلي الكود Organized.
- بتفتح الباب لاستخدام Tools وFrameworks بشكل أكتر كفاءة.
نصيحة لو هتعمل Custom Annotations، فكر كويس لأنها بتأثر على الـ Maintainability بتاعة الكود.
استخدمها لما تكون محتاج تضيف معلومات للكود بوضوح وبدون تعقيد.