JavaRush /جاوا بلاگ /Random-UR /جاوا میں اینوم سے متعلق 15 ڈویلپر انٹرویو کے سوالات (جواب...
Treefeed
سطح

جاوا میں اینوم سے متعلق 15 ڈویلپر انٹرویو کے سوالات (جوابات کے ساتھ!)

گروپ میں شائع ہوا۔
Enumeration ( Enum ) جاوا 5 میں متعارف کرایا گیا تھا اور تب سے یہ جاوا ڈویلپرز میں کافی مقبول ہو گیا ہے۔ یہ جاوا کی مختلف ایپلی کیشنز میں بڑے پیمانے پر استعمال ہوتا ہے۔ چونکہ جاوا میں Enum C یا C++ کے مقابلے میں بہت زیادہ ورسٹائل ہے، اس لیے یہ استعمال کے بہت سے دلچسپ معاملات بھی پیش کرتا ہے، جن میں سے کچھ آپ نے مضمون میں دیکھے ہیں 10 جاوا میں Enum کو استعمال کرنے کے طریقے ۔ لیکن اس مقبولیت کے باوجود، بہت سے جاوا پروگرامرز ابھی تک Enum کی فراہم کردہ فعالیت اور جاوا کوڈ میں Enum استعمال کرنے کی پیچیدگیوں سے لاعلم ہیں۔ یہ متعدد قارئین کے پوچھنے سے واضح ہو گیا، مثال کے طور پر، جاوا میں ایک انٹرفیس کو لاگو کرنے کے لیے Enum کی صلاحیت کے بارے میں یا ہم Enums کو Enum سے باہر کیوں نہیں بنا سکتے ، یہ نوٹ کرتے ہوئے کہ ان سے ایک انٹرویو میں اس بارے میں پوچھا گیا تھا۔ اس نے ہمیں جاوا اینوم میں اکثر پوچھے گئے سوالات کی ایک فہرست مرتب کرنے کی ترغیب دی جو نہ صرف آپ کو انٹرویوز میں کامیاب ہونے میں مدد دیتی ہیں بلکہ سیکھنے کے لیے نئی راہیں بھی کھولتی ہیں۔ جیسا کہ پہلے کہا گیا ہے، اکثر انٹرویو کے سوالات آپ کو موضوع کو زیادہ سنجیدگی سے لینے پر مجبور کرتے ہیں، جو کہ کوئی بری چیز نہیں ہے، اور Enum کی طاقت اور افادیت کو دیکھتے ہوئے، اب وقت آگیا ہے کہ آپ ایک enum ماسٹر بن جائیں۔ ذیل میں Enum کی مختلف فعالیتوں اور خصوصیات پر مبنی سوالات کی فہرست ہے۔ آپ اسے انٹرویو کے لیے تیاری کے مواد کے طور پر استعمال کر سکتے ہیں یا صرف گنتی کے لیے ایک گائیڈ کے طور پر۔ اگر آپ جاوا میں نئے ہیں، تو آپ Enum کے بارے میں بہت سی نئی اور مفید چیزیں سیکھیں گے۔ 1) کیا اینوم جاوا میں انٹرفیس کو نافذ کر سکتا ہے؟ ہاں، Enum انٹرفیس کو وراثت میں لے سکتا ہے ۔ کیونکہ Enum قسم کلاس اور انٹرفیس سے ملتی جلتی ہے ، یہ انٹرفیس کا وارث بن سکتا ہے۔ یہ کچھ معاملات میں اپنی مرضی کے نفاذ کے طور پر Enum کو استعمال کرنے میں حیرت انگیز لچک دیتا ہے۔ یہاں اس صلاحیت میں Enum استعمال کرنے کی ایک اچھی مثال ہے۔ 2) کیا Enum وراثت میں (توسیع) کلاس حاصل کر سکتا ہے؟ نہیں، وہ نہیں کرسکتا! غیر متوقع، چونکہ پہلے کہا گیا تھا کہ Enum قسم جاوا میں کلاس یا انٹرفیس کی طرح ہے۔ ٹھیک ہے، یہ بنیادی وجہ ہے کہ یہ سوال پچھلے سوال کے بعد پوچھا جاتا ہے. چونکہ Enum پہلے سے ہی abstract class java.lang.Enum سے وراثت میں ہے ، یہ واضح ہے کہ کوئی اور کلاس وراثت میں نہیں مل سکے گی کیونکہ جاوا متعدد کلاس وراثت کو سپورٹ نہیں کرتا ہے۔ java.lang.Enum سے وراثت میں مل کر ، تمام enums میں ordinal() ، values()، یا valueOf() طریقے ہوتے ہیں ۔ 3) کسی چیز کی مثال کے بغیر اینوم کیسے بنایا جائے؟ کیا یہ تالیف کی غلطی کے بغیر ممکن ہے؟ یہ ان مشکل سوالات میں سے ایک ہے جو انٹرویو لینے والوں کو پسند ہے۔ چونکہ ایک Enum کو ایک خاص تعداد میں اشیاء کے مجموعہ کے طور پر دیکھا جاتا ہے، جیسے ہفتے کے دن یا سال کے مہینوں، اس لیے بغیر کسی چیز کے Enum حاصل کرنا مشکوک لگتا ہے۔ لیکن ہاں، آپ بغیر مثال کے ایک Enum بنا سکتے ہیں مثال کے طور پر یوٹیلیٹی کلاس بنا کر۔ Enum استعمال کرنے کا یہ ایک اور جدید طریقہ ہے: public enum MessageUtil{ ; // required to avoid compiler error, also signifies no instance public static boolean isValid() { throw new UnsupportedOperationException("Not supported yet."); } } 4) کیا ہم Enum کے لیے toString() طریقہ کو اوور رائیڈ کر سکتے ہیں؟ اگر ہم دوبارہ وضاحت نہیں کرتے ہیں تو کیا ہوگا؟ یقیناً آپ Enum کے toString() طریقہ کو اوور رائیڈ کر سکتے ہیں ، کیونکہ آپ کسی بھی کلاس کو اوور رائیڈ کر سکتے ہیں جو java.lang.Object کو وراثت میں حاصل کرتی ہے اور اس کے پاس toString() طریقہ دستیاب ہے، اور اگر آپ ایسا نہیں کرتے ہیں تو بھی آپ کو کچھ نہیں کھونا پڑے گا کیونکہ خلاصہ Enum کلاس کا بیس آپ کے لیے یہ کرے گا، اور نام واپس کرے گا، جو کہ Enum مثال کا نام ہے۔ Enum کلاس سے toString() طریقہ کار کا کوڈ یہ ہے : public String toString() { return name; } نام اس وقت بیان کیا جاتا ہے جب کمپائلر Enum کلاس میں ہی ایک مثال بنانے کے جواب میں enum بنانے کے لیے کوڈ مختص کرتا ہے، اور ساتھ ہی سے کنسٹرکٹر میں ایک آرڈینل بناتا ہے۔ java.lang.Enum کلاس : enum بنانے کے لیے protected Enum(String name, int ordinal) { this.name = name; this.ordinal = ordinal; } یہ واحد کنسٹرکٹر ہے ، جسے کمپائلر پروگرام میں Enum کے اعلان کے جواب میں کہتا ہے۔ 5) کیا ہم اینوم کے باہر اینوم کو انسٹینٹیٹ کر سکتے ہیں؟ کیوں نہیں؟ آپ Enum کی حدود سے باہر ایک Enum کو فوری نہیں کر سکتے کیونکہ Enum کے پاس پبلک نہیں ہے کنسٹرکٹر، اور کمپائلر آپ کو ایسا کوئی کنسٹرکٹر متعارف کرانے کی اجازت نہیں دے گا۔ چونکہ کمپائلر Enum قسم کے اعلان کے جواب میں زیادہ تر کوڈ تیار کرتا ہے، یہ Enums کے اندر پبلک کنسٹرکٹرز کو اجازت نہیں دیتا، Enum مثالوں کو اندرونی طور پر اعلان کرنے پر مجبور کرتا ہے۔ 6) کیا ہم Enum کے اندر کنسٹرکٹر کی وضاحت کر سکتے ہیں؟ یہ سوال اکثر پچھلے سوال کی پیروی کرتا ہے۔ ہاں، آپ کر سکتے ہیں، لیکن یاد رکھیں کہ یہ صرف نجی یا پیکیج پرائیویٹ کنسٹرکٹرز کے ساتھ ہی ممکن ہے۔ اینوم میں عوام اور محفوظ کنسٹرکٹرز کی اجازت نہیں ہے۔ یہاں آپ ایک مثال دیکھ سکتے ہیں۔ 7) == یا equals() طریقہ استعمال کرتے ہوئے Enum کا موازنہ کرنے میں کیا فرق ہے؟ یہ ایک بہت وسیع اور مشکل مسئلہ ہے جس کا یہاں تفصیل سے احاطہ کیا گیا ہے ۔ 8) ordinal() طریقہ Enum میں کیا کرتا ہے؟ ordinal() طریقہ اس ترتیب کو لوٹاتا ہے جس میں Enum مثالوں کو Enum کے اندر نامزد کیا گیا ہے۔ مثال کے طور پر، DayOfWeek Enum میں، آپ دنوں کو ترتیب سے بتا سکتے ہیں: public enum DayOfWeek{ MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY; } اور اگر ہم DayOfWeek.MONDAY.ordinal() طریقہ کو کہتے ہیں ، تو یہ 0 لوٹ آئے گا - جس کا مطلب پہلی مثال ہے۔ یہ طریقہ چیزوں کی اصل حالت کے مطابق آرڈر فراہم کرنے کے لیے بہت مفید ہے: یعنی یہ بتاتا ہے کہ TUESDAY (منگل) MONDAY (پیر) کے بعد، اور WEDNESDAY (بدھ) سے پہلے آتا ہے ۔ اسی طرح، آپ سال کے مہینوں کی نمائندگی کے لیے ایک گنتی کا استعمال کر سکتے ہیں، جہاں فروری جنوری کے بعد آتا ہے لیکن مارچ سے پہلے آتا ہے۔ تمام حسب ضرورت شماریات اس طریقہ کو خلاصہ کلاس java.lang.Enum سے وراثت میں حاصل کرتی ہیں، اور وہ java.lang.Enum پر محفوظ کنسٹرکٹر کو کال کر کے کمپائلر کے ذریعے سیٹ کی جاتی ہیں ، جو ایک نام اور ایک آرڈینل لیتا ہے۔ 9) کیا جاوا میں TreeSet یا TreeMap کے ساتھ Enum کا استعمال ممکن ہے؟ یہ واقعی ایک دلچسپ Enum سوال ہے، اور ایک ایسا سوال جسے لوگ اپنے علم کی گہرائی کو جانچنے کے لیے پوچھنا پسند کرتے ہیں۔ جب تک آپ java.lang.Enum کوڈ کو نہیں دیکھیں گے ، آپ کو شاید معلوم نہیں ہوگا کہ Enum کو موازنہ انٹرفیس وراثت میں ملتا ہے ، جو TreeSet اور TreeMap جیسے آرڈر شدہ مجموعوں میں استعمال کے لیے ایک اہم ضرورت ہے ۔ چونکہ Enum کو موازنہ انٹرفیس بطور ڈیفالٹ وراثت میں ملتا ہے، اس لیے اسے TreeSet اور TreeMap کے ساتھ استعمال کیا جا سکتا ہے ۔ 10) Enum میں ordinal() اور compareTo() میں کیا فرق ہے؟ یہ پچھلے سوال سے براہ راست مندرجہ ذیل ہے: درحقیقت compareTo() طریقہ کے ذریعہ فراہم کردہ آرڈر کی تقلید کرتا ہے۔ ordinal() ، جو کہ Enum کا قدرتی حکم ہے۔ مختصراً، Enum موازنہ کو اس ترتیب میں محدود کرتا ہے جس میں ان کا اعلان کیا جاتا ہے۔ اس کے علاوہ، یہ یاد رکھنے کے قابل ہے کہ یہ کنسٹینٹس صرف ایک ہی قسم کے دوسرے کانسٹینٹ کے ساتھ موازنہ کیے جاسکتے ہیں - مختلف قسم کے مستقل کا موازنہ کرنے سے کمپائلر کی غلطی ہوسکتی ہے۔ 11) کیا اینوم کو سوئچ کیس میں استعمال کرنا ممکن ہے؟ ہاں تم کر سکتے ہو. مزید یہ کہ یہ Enum استعمال کرنے کے اہم فوائد میں سے ایک ہے۔ چونکہ Enum مثالیں ایک عارضی مستقل پر مرتب ہوتی ہیں، آپ انہیں محفوظ طریقے سے کیس کے اندر انجیکشن لگا سکتے ہیں اور سوئچ کر سکتے ہیں ۔ یہاں ہفتے کے دنوں کے ساتھ کوڈ کی ایک مثال ہے: public void developerState(DayOfWeek today){ switch(today){ case MONDAY: System.out.println("Hmmmmmmmm"); break; case TUESDAY: System.out.println("Hmmmm"); break; case FRIDAY : System.out.println("Yeahhhhhh"); break; } } Enum اور Switch ایک دوسرے کو اچھی طرح سے مکمل کرتے ہیں، خاص طور پر اگر Enum میں مستحکم مستقل کی ایک چھوٹی سی تعداد شامل ہو، مثال کے طور پر، ہفتے کے سات دن، سال کے 12 مہینے وغیرہ۔ Enum کے ساتھ swith case استعمال کرنے کی دوسری مثالیں 12) پورے Enum مثال کے ذریعے کیسے اعادہ کیا جائے؟ اگر آپ نے java.lang.Enum کھولا ہے ، تو آپ جانتے ہیں کہ values() طریقہ تمام Enum constants کی ایک صف لوٹاتا ہے۔ چونکہ ہر enum کو java.lang.Enum وراثت میں ملتا ہے ، اس لیے ان کے پاس values() طریقہ ہوتا ہے ۔ اس کا استعمال کرتے ہوئے، آپ کسی خاص قسم کی گنتی کے تمام کنسٹینٹس کے ذریعے اعادہ کر سکتے ہیں۔ اس کی مثالیں foreach لوپ اور values() طریقہ کے ساتھ دیکھیں ۔ 13) Enum کو سنگلٹن کے طور پر استعمال کرنے کے فوائد اور نقصانات کیا ہیں؟ Enum سنگلٹن پیٹرن کو نافذ کرنے کے لیے ایک فوری شارٹ کٹ فراہم کرتا ہے، اور چونکہ یہ Effective Java Book میں بھی شامل ہے، اس لیے یہ ایک مقبول انتخاب ہے۔ پہلی نظر میں، Enum سنگلٹن امید افزا اور کافی آسان ہے، جیسے کہ یہ انسٹیٹیئشن کو کنٹرول کرتا ہے، محفوظ طریقے سے سیریلائز کیا جا سکتا ہے، اور سب سے بڑھ کر، Enum کا استعمال کرتے ہوئے تھریڈ سے محفوظ سنگلٹن بنانا آسان ہے۔ اب آپ کو متغیرات کے اتار چڑھاؤ کو دوہری جانچنے کے بارے میں فکر کرنے کی ضرورت نہیں ہے۔ اس نقطہ نظر کو استعمال کرنے کے فوائد اور نقصانات کے بارے میں یہاں مزید پڑھیں ۔ 14) int گنتی اور String enumeration پیٹرن کے بجائے Enum استعمال کرنے کا کیا فائدہ ہے؟ اگر آپ 5 سال سے زیادہ عرصے سے پروگرامنگ کر رہے ہیں اور ابھی بھی JDK 1.3 یا 1.4 میں ہیں، تو آپ String اور int گنتی کے نمونوں سے واقف ہوں گے ، جو کہ معروف فکسڈ کے مجموعہ کی نمائندگی کرنے کے لیے ایک عوامی جامد حتمی مستقل سابقہ ​​استعمال کرتے ہیں۔ چیزوں کی تعداد، جیسے ہفتے کے دن ۔ یہاں بہت سے مسائل ہیں: آپ کو Enum قسم کی آزادی نہیں ہے، کیونکہ ہفتے کے دن کے لیے ذمہ دار String متغیر کسی بھی صوابدیدی قدر کو لے سکتا ہے۔ اسی طرح، ایک قابل شمار int کسی بھی قدر کو لے سکتا ہے، اور مرتب کرنے والا اسے خوشی سے نگل جائے گا۔ اور استعمال کرنا Enum ، آپ کو وہ قسم کی حفاظت ملتی ہے جسے مرتب کرنے والا آپ کے لیے چیک کرتا ہے۔ Effective Java میں اس موضوع پر کچھ دلچسپ خیالات ہیں، جنہیں جاوا کے تمام ڈویلپرز کے لیے پڑھنے کی سفارش کی جاتی ہے۔ 15) String کو Enum میں کیسے تبدیل کیا جائے؟ یہ روزانہ کا سوال ہے جو جاوا ایپلیکیشن ڈویلپمنٹ میں String اور Enum کے استعمال کی مقبولیت کی وجہ سے سامنے آتا ہے ۔ Enum کو سٹرنگ میں تبدیل کرنے کا بہترین طریقہ یہ ہے کہ Enum پر ہی ایک فیکٹری طریقہ کی وضاحت کی جائے جو String کے دلائل لے کر اسے Enum کے طور پر واپس کرے ۔ آپ کیس کو نظر انداز کرنا بھی چاہیں گے۔ یہاں تاروں کو گنتی میں تبدیل کرنے کی کچھ مثالیں ہیں۔ یہ ہمیں Enum کے بارے میں ہماری 15 سوالات ( اور جوابات ) کی فہرست کے اختتام پر لے آتا ہے ۔ لیکن یاد رکھیں: پڑھنا سیکھنے کے لیے کافی نہیں ہے، یہ صرف پہلا قدم ہے ۔ enums سے فائدہ اٹھانے کے لیے، یہ تلاش کرنے کی کوشش کریں کہ آپ اپنے پروجیکٹ میں Enum کو کہاں استعمال کر سکتے ہیں - اس سے آپ کو حقیقی دنیا کا تجربہ ملے گا، اور اس تجربے کے ساتھ آپ مثالوں سے زیادہ سیکھیں گے، کیونکہ آپ کو مزید مسائل کا سامنا کرنا پڑے گا جن سے آپ زیادہ سے زیادہ نمٹ سکتے ہیں۔ پیچیدہ اور تفصیلی طریقے۔ ضروریات۔ Enum کے بارے میں یہ سوالات آپ کے علم کو جانچنے کے لیے توجہ دینے کے قابل ہیں، خاص طور پر اگر آپ انٹرویو کے لیے جلدی میں ہیں اور Enum کائنات میں تفصیلی ڈوبنے کا وقت نہیں ہے۔
تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION