1. attreencepolicy.source: يتم الاحتفاظ بالتعليقات التعليقات فقط في الملف المصدر. عندما يتم تجميع ملف Java في ملف الفصل ، يتم التخلي عن التعليقات التوضيحية ؛
2. attreencepolicy.class: يتم الاحتفاظ بالتعليقات التعليق على ملف الفصل ، ولكن يتم التخلي عنها عندما يقوم JVM بتحميل ملف الفئة. هذه هي دورة الحياة الافتراضية.
3. attreencepolicy.runtime: لا يتم حفظ التعليقات التوضيحية فقط إلى ملف الفصل ، ولكن لا يزال موجودًا بعد تحميل JVM ملف الفصل ؛
تتوافق دورات الحياة الثلاث هذه مع: ملف مصدر Java (ملف .java) --->. ملف الفئة ----> bytecode في الذاكرة.
فكيف تختار دورة حياة التعليقات التوضيحية الصحيحة؟
بادئ ذي بدء ، يجب أن نوضح مصدر طول دورة الحياة <Class <Runtime ، لذلك حيث يمكن للمرء أن يتصرف ، يمكن أن يتصرف الأخير. بشكل عام ، إذا كنت بحاجة إلى الحصول على معلومات التعليقات التوضيحية ديناميكيًا في وقت التشغيل ، فيمكنك فقط استخدام شرح وقت التشغيل ؛ إذا كنت ترغب في إجراء بعض عمليات المعالجة المسبقة في وقت الترجمة ، مثل توليد بعض التعليمات البرمجية الإضافية (مثل ButterKnife) ، يمكنك استخدام شرح الفصل ؛ إذا قمت فقط ببعض عمليات الفحص ، مثل Override و SuppressWarnings ، فيمكنك استخدام شرح المصدر.
فيما يلي تطبيق بسيط لشروح وقت التشغيل.
احصل على التعليقات التوضيحية
تحتاج إلى الحصول على تعليقات توضيحية في وقت التشغيل من خلال التفكير ، والتي يمكن الحصول عليها من الحزمة ، الفئة ، الحقل ، الطريقة .... الأساليب الأساسية هي نفسها. العديد من الطرق الشائعة هي كما يلي:
/*** احصل على شرح من النوع المحدد*/public <A يمتد التعليق التوضيحي> getAnnotation (الفئة <a> annotationType) ؛/*** احصل على جميع التعليقات التوضيحية ، إن وجدت*/التعليقات التوضيحية العامة [] getAnnotations () ؛/** على هذا العنصر ، ارجع صحيحًا إذا كان هناك ، وإلا فكل/منطقي عام ، isannotationpresent (الفئة <؟ يمتد التعليق التوضيحي> التعليق التوضيحي) ؛/***احصل على جميع التعليقات التوضيحية للمعلمات في الطريقة*/التعليق العام [] [] getParameterannotations () ؛
لاستخدام هذه الوظائف ، يجب أولاً الحصول على العناصر المقابلة من خلال الانعكاس: الفئة ، الحقل ، الطريقة ، إلخ.
التعليقات التوضيحية المخصصة
دعنا نلقي نظرة على الطريقة البسيطة لاستخدام التعليقات التوضيحية المخصصة. هنا نحدد أولاً 3 تعليقات توضيحية في وقت التشغيل:
// فئة قابلة للتطبيق ، واجهة (بما في ذلك نوع التعليق التوضيحي) أو enum retention (attreentionpolicy.runtime) target (elementType.type) public interface classInfo {string value () ؛ } // سمات الحقل المعمول بها ، تشمل أيضًا ثوابت التعداد (attreentionpolicy.runtime) target (elementType.field) public interface fieldinfo {int [] value () ؛ } // طريقة قابلة للتطبيق (attreentionpolicy.runtime) target (elementType.method) public interface methodInfo {string name () افتراضي "long" ؛ بيانات السلسلة () ؛ int Age () Default 27 ؛ }هذه التعليقات التوضيحية الثلاثة قابلة للتطبيق على عناصر مختلفة وجميعها لها سمات مختلفة. عند استخدام التعليقات التوضيحية ، تحتاج إلى تعيين قيم السمات هذه.
حدد فئة اختبار أخرى لاستخدام هذه التعليقات التوضيحية:
/*** اختبار وقت تشغيل وقت التشغيل*/@classInfo ("فئة الاختبار") الفئة العامة testRuntimeAnnotation {fieldinfo (value = {1 ، 2}) السلسلة العامة fieldInfo = "FileDinfo" ؛ getMethodinfo () {return testruntimeannotation.class.getSimplename () ؛}}لا يزال الأمر بسيطًا جدًا للاستخدام. أخيرًا ، دعونا نرى كيفية الحصول على معلومات التعليق التوضيحي في الكود:
/*** اختبار وقت تشغيل وقت التشغيل*/private void _testruntimeannotation () {StringBuffer SB = New StringBuffer () ؛ class <؟> cls = testruntimeannotation.class ؛ constructor <؟> [] ". القيمة: ") .append (classInfo.Value ()). إلحاق ("/n/n ") ؛} sb.append (" الحقل التعليق: "). (FieldInfo! = null) {sb.append (modifier.toString (field.getModiers ())). إلحاق ("") .append (field.gettype (). ") .append (arrays.toString (fieldinfo.value ())) method.getAnnotation (methodInfo.class) ؛ if (methodInfo! = null) {sb.append (modifier.toString (method.getModifiers ()). .append (method.getName ()). إلحاق ("/n") ؛ sb.append ("قيمة التعليقات التوضيحية:") .append ("/n") ؛ sb.append ("name:") .Append (methodInfo.name ()). ") .append (methodInfo.data ()). إلحاح ("/n ") ؛ sb.append (" العمر: ") .append (methodInfo.age ()). إلحاق ("/n ") ؛}} system.out.printتتم العمليات للحصول على العنصر المقابل من خلال الانعكاس ، ثم الحصول على التعليق التوضيحي على العنصر ، وأخيراً الحصول على قيمة السمة من التعليقات التوضيحية.
دعنا نلقي نظرة على الإخراج ، هنا سأعرضه مباشرة على هاتفي:
لخص
ما سبق هو كل التفسير التفصيلي للمفاهيم الأساسية لتعليق اللغة Java ، وآمل أن يكون ذلك مفيدًا للجميع. يمكن للأصدقاء المهتمين الاستمرار في الرجوع إلى الموضوعات الأخرى ذات الصلة على هذا الموقع. إذا كانت هناك أي أوجه قصور ، فيرجى ترك رسالة لإشارةها. شكرا لك يا أصدقائك لدعمكم لهذا الموقع!