حصہ 1۔ میں نے سورس اور کلاس کی قسم کی تشریحات کے بارے میں بہت مختصر لکھا ہے۔ یہ پڑھنے کے قابل ہے، تاکہ دوسرے حصے میں گم ہونے سے بچ سکے اور اپنی "غلط فہمی" کو تھوڑا سا بڑھا سکے =) میں وعدہ کرتا ہوں کہ کم از کم ایک لفظ ضرور ہوگا جو آپ جانتے ہوں گے! پہلی بار جب میں نے یہاں کاموں میں تشریحات دیکھی تو میں نے ان پر زیادہ توجہ نہیں دی۔ یہاں اور وہاں @Override ہے، لیکن IDEA اس میں اضافہ کرتا ہے، تو میں نے سوچا کہ ایسا ہی ہونا چاہیے۔ وقت گزرنے کے ساتھ، میں نے محسوس کیا کہ سب کچھ بہت گہرا ہے۔ جیسا کہ آپ مطالعہ کرتے ہیں، تشریحات کچھ بیکار لیکن ضروری معلوم ہوسکتی ہیں۔ آپ نہیں جانتے کہ وہ کیوں موجود ہیں یا وہ کیا کرتے ہیں۔ آپ نے کچھ مضامین پڑھے ہیں جن میں کہا گیا تھا، "یہ بہت اچھا ہے کہ ہمارے پاس اب تشریحات ہیں، سب کچھ بہت آسان ہو گیا ہے۔" لیکن میں نہیں جانتا تھا کہ چیزیں پہلے کیسی تھیں، اور میں یہ نہیں سمجھتا تھا کہ اب چیزیں آسان ہیں۔ اب میں جانتا ہوں اور تھوڑا سا اشتراک کرنا چاہتا ہوں۔ (RetentionPolicy) تشریحات کی 3 اقسام ہیں:
مقامی — میں نے اسے کبھی نہیں دیکھا اور نہ ہی اسے استعمال کیا۔ میرے خیال میں یہ ایک غیر معمولی تشریح ہے، کیونکہ یہ اس وقت استعمال ہوتی ہے جب آپ کو کسی اور "مقامی" زبان میں کوڈ چلانے کی ضرورت ہوتی ہے۔ میں نے کوشش کی اور اس کا واضح ذکر تلاش کرنے میں ناکام رہا۔
SuppressWarnings — یہ تشریح اکثر اس طرح استعمال ہوتی ہے: @SuppressWarnings("غیر چیک شدہ")۔ اس کا استعمال ان انتباہات کو دبانے کے لیے کیا جاتا ہے جن کے بارے میں آپ پہلے سے واقف ہیں۔ پچھلی مثال غیر چیک شدہ قسم کے تبادلوں کے بارے میں انتباہات کو دبا دیتی ہے۔ ایک بار پھر، یہ واحد استعمال ہے جس کا میں نے سامنا کیا ہے۔
جنریٹڈ — میں ابھی ایک اسائنمنٹ کی وجہ سے اس تشریح میں جا رہا ہوں جہاں مجھے XSD فائلوں سے کلاسیں تیار کرنی ہیں۔ یہ 3 تشریحات کافی مخصوص ہیں اور اس وقت آپ کے لیے زیادہ تر غیر دلچسپی کا باعث ہیں۔ میں آخری کو بیان کروں گا۔
اوور رائڈ - آپ اسے مسلسل استعمال کرتے ہیں اور یہ بہت مفید کام کرتا ہے۔ کسی طریقہ کو زیر کرتے وقت، IDEA کی مدد کے بغیر غلطی کرنا آسان ہے۔ غلطیاں ہوں یا عام غلطیاں، غلطیاں ہوتی ہیں۔ یہ تشریح اس بات کو یقینی بنائے گی کہ پیرنٹ کلاس میں طریقہ ہمارے (تشریح شدہ) طریقہ سے میل کھاتا ہے۔ یہ یقینی بناتا ہے کہ طریقہ شامل کرنے کے بجائے اوور رائیڈ ہو جائے گا۔ ری فیکٹرنگ کوڈ پر، پیرنٹ طریقہ کو ہٹایا یا تبدیل کیا جا سکتا ہے۔ ایک بار پھر، یہ تشریح غلطی کی نشاندہی کرے گی۔ اس کے بغیر، ہمارا طریقہ آسانی سے شامل ہو جائے گا۔ بورنگ؟ میں ہاں کہوں گا۔ اس مضمون سے حاصل کرنے میں زیادہ مددگار نہیں ہے۔ یہاں تقریباً ہر چیز (90%) ایسی چیز کی وضاحت کرتی ہے جسے آپ کبھی استعمال نہیں کریں گے یا بہت کم ہی استعمال کریں گے۔ بقیہ 10% @Override تشریح کو ہیلو کہہ رہے ہیں اور اس کی وضاحت کر رہے ہیں، جو کہ پہلی نظر میں بیکار ہے۔ اس نے کہا، مجھے لگتا ہے کہ مضمون کے دوسرے حصے میں زیادہ دلچسپ ہو جائے گا. وہاں RUNTIME تشریحات پر تبادلہ خیال کیا جائے گا - وہ عملدرآمد کے دوران کوڈ کے ساتھ تعامل کرتے ہیں اور کالا جادو کرتے ہیں۔ تشریحات۔ حصہ 2. لومبوک
- ماخذ - مرتب کرنے والے کے لیے تشریحات
- کلاس - تشریح سے معلومات بائی کوڈ میں لکھی جائے گی لیکن رن ٹائم پر دستیاب نہیں ہوگی۔ ان کا کہنا ہے کہ معیاری لائبریری میں اس قسم کی بہت سی تشریحات ہیں، جنہیں اب پسماندہ مطابقت کے لیے برقرار رکھا گیا ہے۔ یہ بہت مخصوص کاموں کے لیے استعمال ہوتا ہے۔
- StackOverflow پر سوال و جواب
- رن ٹائم - یہ تشریحات سب سے زیادہ مقبول ہیں۔ ان کا استعمال اس وقت کیا جاتا ہے جب کوڈ پر عمل کیا جا رہا ہو۔
- java/lang/annotation/Native.class؛
- java/lang/SuppressWarnings.class
- javax/annotation/Generated.class
- java/lang/Override.class
- com/sun/istack/internal/Nullable.class
- com/sun/istack/internal/NotNull.class
- com/sun/istack/internal/Interned.class
- مقامی — اس تشریح کے ساتھ ایک متغیر مقامی کوڈ کا حوالہ دے سکتا ہے۔
- SuppressWarnings — یہ تشریح مختلف کمپائلر وارننگز کو دبا دیتی ہے۔
- تیار کردہ — یہ تشریح ماخذ کوڈ کو نشان زد کرتی ہے جو تیار کیا گیا تھا۔
- اوور رائڈ - یہ تشریح طریقہ اوور رائیڈ کو چیک کرتی ہے۔
GO TO FULL VERSION