سؤال

ما هو الغرض من التعليقات التوضيحية في جافا؟لدي هذه الفكرة الغامضة عنهم في مكان ما بين التعليق والكود الفعلي.هل تؤثر على البرنامج في وقت التشغيل؟

ما هي استخداماتهم النموذجية؟

هل هي فريدة من نوعها لجافا؟هل هناك ما يعادل C++؟

هل كانت مفيدة؟

المحلول

يتم استخدام التعليقات التوضيحية بشكل أساسي بواسطة التعليمات البرمجية التي تقوم بفحص التعليمات البرمجية الأخرى.غالبًا ما يتم استخدامها للتعديل (على سبيل المثال.تزيين أو تغليف) الفصول الموجودة في وقت التشغيل لتغيير سلوكها.أطر مثل JUnit و بيات شتوى استخدم التعليقات التوضيحية لتقليل كمية التعليمات البرمجية التي تحتاج إلى كتابتها بنفسك لاستخدام الأطر.

أوراكل لديها شرح جيد للمفهوم ومعناه في جافا على موقعهم.

نصائح أخرى

وأيضًا، هل هي فريدة بالنسبة لـ Java، وهل هناك ما يعادلها في C++؟

لا، ولكن VB وC# لديهما صفات وهي نفس الشيء.

استخدامها متنوع للغاية.أحد أمثلة Java النموذجية، @Override ليس له أي تأثير على الكود ولكن يمكن للمترجم استخدامه لإنشاء تحذير (أو خطأ) إذا لم تتجاوز الطريقة المزخرفة طريقة أخرى بالفعل.وبالمثل، يمكن وضع علامة على الأساليب عفا عليها الزمن.

ثم هناك انعكاس.عندما تعكس نوع فئة ما في التعليمات البرمجية الخاصة بك، يمكنك الوصول إلى السمات والتصرف وفقًا للمعلومات الموجودة هناك.لا أعرف أي أمثلة في Java ولكن في .NET يتم استخدام هذا بواسطة المترجم للإنشاء (دي) التسلسل معلومات للفصول الدراسية، وتحديد تخطيط الذاكرة من الهياكل و أعلن عن واردات الوظيفة من المكتبات القديمة (من بين أمور أخرى).كما أنهم يتحكمون في كيفية عمل مصمم نماذج IDE.

/يحرر:السمات الموجودة في الفئات قابلة للمقارنة بواجهات العلامات (مثل قابل للتسلسل في جافا).ومع ذلك، تنص إرشادات الترميز .NET على عدم استخدام واجهات العلامات.كما أنها تعمل فقط على مستوى الفصل الدراسي، وليس على مستوى الطريقة.

يقدم Anders ملخصًا جيدًا، وإليك مثالًا على تعليق توضيحي لـ JUnit

@Test(expected=IOException.class)
public void flatfileMissing() throws IOException {
    readFlatFile("testfiles"+separator+"flatfile_doesnotexist.dat");
}

هنا @Test التعليق التوضيحي يخبر JUnit أن flatfileMissing الطريقة هي اختبار يجب تنفيذه وأن النتيجة المتوقعة هي الرمي IOException.وبالتالي، عند إجراء اختباراتك، سيتم استدعاء هذه الطريقة وسينجح الاختبار أو يفشل بناءً على ما إذا كان IOException هذا خطئ.

تحتوي Java أيضًا على أداة معالجة التعليقات التوضيحية (apt) حيث لا يمكنك إنشاء التعليقات التوضيحية فحسب، بل تقرر أيضًا كيفية عمل هذه التعليقات التوضيحية على الكود المصدري.

هنا هي مقدمة.

لرؤية بعض الأشياء الرائعة التي يمكنك إجراؤها باستخدام التعليقات التوضيحية، راجع ذلك تعليقاتي التوضيحية ومعالج التعليقات التوضيحية في JavaBean.

إنها رائعة لإنشاء التعليمات البرمجية، وإضافة عمليات تحقق إضافية أثناء الإنشاء، ولقد كنت أستخدمها أيضًا لإطار عمل رسائل الخطأ (لم يتم نشرها بعد - تحتاج إلى توضيحها مع الرؤساء...).

حسب التعريف الحرفي، يضيف التعليق التوضيحي ملاحظات إلى عنصر ما.وبالمثل، فإن تعليقات Java التوضيحية هي علامات نقوم بإدراجها في التعليمات البرمجية المصدر لتوفير المزيد من المعلومات حول التعليمات البرمجية.تقوم تعليقات Java التوضيحية بربط المعلومات بعنصر البرنامج المشروح.إلى جانب التعليقات التوضيحية لـ Java، تحتوي برامج Java على كميات وفيرة من الوثائق غير الرسمية التي يتم تضمينها عادةً ضمن التعليقات في ملف التعليمات البرمجية المصدر.لكن التعليقات التوضيحية في Java تختلف عن التعليقات، فهي تضيف تعليقات توضيحية إلى عناصر البرنامج مباشرةً باستخدام أنواع التعليقات التوضيحية لوصف شكل التعليقات التوضيحية.تقدم Java Annotations المعلومات بطريقة قياسية ومنظمة بحيث يمكن استخدامها بشكل ملائم من خلال أدوات المعالجة.

لقراءة بالتفصيل، هناك برنامج تعليمي لطيف حول تعليقات جافا

متى تستخدم التعليق التوضيحيOverride الخاص بـ Java ولماذا؟يشير الرابط إلى سؤال حول متى يجب على الشخص استخدام التعليق التوضيحي للتجاوز (@override)..قد يساعد هذا في فهم مفهوم التعليقات التوضيحية بشكل أفضل. تحقق من ذلك.

تُعرف التعليقات التوضيحية عندما يتعلق الأمر بـ EJB بأنها تختار نهجًا ضمنيًا متوسطًا على مقاربة صريحة متوسطة ، عندما تستخدم التعليق التوضيحي ، فأنت تقوم بتخصيص ما تحتاجه بالضبط من واجهة برمجة التطبيق :دون استخدام التعليق التوضيحي:سيكون الرمز

transfer(Account account1, Account account2, long amount)    
{
   // 1: Call middleware API to perform a security check
   // 2: Call middleware API to start a transaction
   // 3: Call middleware API to load rows from the database
   // 4: Subtract the balance from one account, add to the other
   // 5: Call middleware API to store rows in the database
   // 6: Call middleware API to end the transaction
}

أثناء استخدام التعليقات التوضيحية ، لا يحتوي الكود على مكالمات API مرهقة لاستخدام خدمات الأوسط.الكود نظيف ويركز على منطق الأعمال

transfer(Account account1, Account account2, long amount) 
{
   // 1: Subtract the balance from one account, add to the other
}

الشروح, ، وهو شكل من أشكال البيانات الوصفية، يوفر بيانات حول برنامج ليس جزءًا من البرنامج نفسه.ليس للتعليقات التوضيحية أي تأثير مباشر على تشغيل الكود الذي تضيف إليه تعليقات توضيحية.

التعليقات التوضيحية لها عدد من الاستخدامات، من بينها:

  • معلومات للمترجم - يمكن للمترجم استخدام التعليقات التوضيحية لاكتشاف الأخطاء أو منع التحذيرات.
  • وقت الترجمة ومعالجة وقت النشر - يمكن لأدوات البرامج معالجة معلومات التعليقات التوضيحية لإنشاء تعليمات برمجية وملفات XML وما إلى ذلك.
  • معالجة وقت التشغيل - بعض التعليقات التوضيحية متاحة لفحصها في وقت التشغيل.

يتم تحديد نطاق الرؤية بواسطة java.lang.annotation.RetentionPolicy الثوابت SOURCE, CLASS, ، و RUNTIME

  • RetentionPolicy.SOURCE:سيكون التعليق التوضيحي متاحًا في الكود المصدري للبرنامج ويمكن استخدامه بواسطة المترجم أو ملائم لتوليد التعليمات البرمجية.
  • RetentionPolicy.CLASS:سيكون التعليق التوضيحي موجودًا في ملف ‎.class ولكنه لن يكون متاحًا في وقت التشغيل.تستخدم بواسطة أدوات معالجة كود البايت مثل أسم إجراء التعديلات
  • RetentionPolicy.RUNTIME:سيكون التعليق التوضيحي متاحًا في ملف ‎.class ووقت التشغيل، للفحص عبر انعكاس Java عبر getAnnotations().
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top