کمپيوټرپروګرام

جاوا generics: توضيحات او میتودونه

د جاوا ژبې په بڼه پیل کړې د بدلونونه، چې بې له شکه چې په خپل فعالیت مثبت شيبو راوړل ډېر ليدلې. د دغو د پام وړ بدلونونه يو د جاوا صنفي یا generalizations معرفي کول. دا فعالیت نه یوازې لپاره چې د ژبې د انعطاف او هراړخیزو، خو هم د معلوماتو د ډولونو د راوستلو له پلوه څومره خوندي.

دا حقيقت دی چې په جاوا عمومي کوډ د generics معرفي مخکې شي رامنځته شي، نه يوازې په ډول اشاره Object له پلوه. دا ډول تړنې کولای شي هر څيز ورکړل شي. وروسته د ټولو، په جاوا ټولګي دي ضمني Object ټولګي وارثان. که څه هم، دا طریقه د د د د هدف په ډول د څيز څخه يو څيز څرګند بدلون د امنيت د ډولونو په اړوند څو غلطيو د یوه بالقوه سرچینه ده. کله چې generalizations په کارولو سره د ټولو ترشک لاندې دي ضمني او په اتوماتيک ډول ترسره، آن د تېروتنې د دې وړتيا له منځه وړلو.

جاوا generics: تفصيل او د مثال په توګه

راځئ چې د لاندې شکل کې په منظمه توګه په ټولګيو کې د عمومي کولو د غوښتنلیک یو ساده مثال په توګه په پام کې. او بيا د ټولو د subtleties او د جاوا صنفي نازکیو يوه تفصیلي معاينه لاړ.

ته په لاره کې په کوم کې چې د ټولګي اعلامیه واقع جوړه پاملرنه وکړي. د ټولګي نوم سمدلاسه وروسته، خلاص زاويه په قوسونو، چې د ليک T. اشاره دا يو د filler ډول، چې په د دې ټولګي د يو مثال په رامنځته کولو د بهیر دی د يوه ځانګړي ډول له خوا به بدل شي. دا په لاندې ډول ښکاري: جوړه obj = نوې جوړه (). بايد يادونه وشي چې د T په ځای کولای شي هر ډول لیک مشخص، خو، د یو قانون په ډول، استفاده T، V یا E.

نوټ: د سره د جاوا په اتمه نسخه څخه پيل شوې، د هدف ډول مشخص کولو په وخت کې جوړونکی مرجع زاويه په قوسونو اعلان شي تش پاتې شي. نو د مثال په توګه پورته rewritten شي: جوړه ( obj = نوې جوړه <>).

کله چې يو زده کوونکی په داسې يوې لاره کې د هغه د بدن پر ځای د برخو، تړنې، شیانو د میتودونو تاسو کولای شي چې د لیک وکاروي لخوا راوړل مشخصو ډولونو کې اعلان وکړ، نو. T راهیسې کله چې د رامنځته کولو د ټولګي څيز دی یو ځانګړي ډول، په دې صورت کې د لومړي او دويم برخو کې به د هغه ډول Integer وي له خوا ځای.

د بحثونو او firstItem secondItem د منطق په تعقيب، د مناسب جوړونکی راجع باید د ډول Integer یا subclass هم وي. که تاسو د يو ارقامو ډول چې کله یو څیز په جوړولو کې دی له هغه څه و مشخص مختلفو انتقال هڅه، د compiler به د دې غلطۍ هم نه پرېږدي. په همدې ډول، دلایل جوړونکی کله چې يو څيز به په توګه وي په لاندې ډول: جوړه obj = نوې جوړه <> (د نوي Integer (1)، د نوي Integer (2)). همدغه د بحثونو او میتودونو setFirst setSecond تطبيق وړ دي. او لکه څنګه چې تاسې، میتودونه getFirst getSecond ښایي اټکل او به د ډول Integer ارزښت ته ستون شي.

عمومی سره څو پارامترونه ټولګي ډولونه

په عمومي ټولګيو کې هم کولای شي د هغه ډول دی چې له يوه گوخې په زاويه په قوسونو دي څو پارامترونه اعلاموي. طرحه یوه قضیه جوړه ټولګي لاندې وړاندې له خوا.

لکه څنګه چې تاسو کولای شي وګورئ، کله چې تاسو په زاويه په قوسونو د دې ټولګي د يو مثال په توګه رامنځ ته باید د ډولونو په همدې توګه پارامترونو شمېر په ګوته کوي. که تاسې د معلوماتو په توګه نقشه جوړښت دې ډول سره بلد دي، تاسو وګورئ، چې دا کټ مټ په هماغه اصل کاروي. د ارزښت د ډول - شته، د لومړي دليل د مهمو ډول، او د دوهم په ګوته کوي. بايد يادونه وشي چې د خپرېږي ډولونه کله چې يو څيز دلایل ښايي ته راشي. د مثال په توګه، د لاندې زیږدیز کال جوړه ټولګي بېلګې په توګه ده په بشپړه توګه صحيح: جوړه <تار، تار> obj.

د generalizations ځينې ځانګړنې

مخکې روان نور، دا باید په نښه شي چې د جاوا compiler نه د دغه ټولګي جوړه مختلفو نسخو نه کړي. په حقیقت کې، د یوه عمومي ډول تالیف ته د ټولو معلوماتو د بهير سره ړنګ شو. پر ځای، تاسو د مناسب ډولونه راوړي، د جوړې ټولګي کې یو ځانګړي نسخه د رامنځته کولو. که څه هم، په دغه پروګرام کې تر اوسه يوازې د دغه ټولګي د يوه عمومي نسخه. په جاوا صنفي پاکول ډول دا پروسه بلل کيږي.

نوټ يو مهم ټکی. د همدې جاوا عمومي ټولګي مختلفو نسخو دویب نه شي کولای چې د یو او د همدې څيز اشاره. ده، فرض موږ دوه تړنې لري: جوړه obj1 او جوړه <دوه> obj2. په پایله کې، په کرښه obj1 = obj2 کې تېروتنه. که څه هم د دواړو متحولونه د ډول جوړه دي، د شيانو ته چې دوی ته راجع دي، توپير لري. دا د په جاوا صنفي د امنيت د ډولونو د لومړي مثال په توګه.

په عمومي ټولګي محدوديتونه

دا مهمه ده چې پوه شي چې generalizations کولای شي يوازې د ډولونو منابعو استعمال شي، چې ده ته د پارامترونو پاس عمومي ټولګي جاوا دليل بايد د ټولګي ډول وي. دا ساده ډوله، لکه، د ساري په، دوه يا اوږد، نه انتقال شي. په بل عبارت، د لاندې کرښې جوړې ټولګي اعلامیه اجازه نه وي: جوړه <اینټ> obj. که څه هم، د دې محدودیت یوه جدي ستونزه نه ده، لکه د هر ابتدايي ډول یوه اړونده جاوا نغښتونکی ټولګي شته. په جدي توګه خبرې کولې، که د ټولګي جوړه تاسو غواړئ چې راخالصه یو integer او څرګندکه ارزښت avtoupakovka هر څه لپاره تاسو کوي: جوړه obj = نوې جوړه <> (25، رښتيا).

بل جدي محدوديت د ناتوانۍ د پاراميټر ډول یو مثال جوړ دی. د مثال په توګه، په لاندې ليکه به د يو تصنيف ګمراهۍ سبب: T لومړي = نوي T (). دا څرګنده ده، ځکه چې تاسو له مخکې نه پوهيږم چې يو دليل د بشپړ ټولګي یا انتزاعي، او يا هم د ليدنمخ وفات شو. د arrays د رامنځته کولو د ورته ځي.

محدود ډولونه

يوڅه زیاتره حالاتو کې شته دي چې دا ضروري ده د هغه ډولونه چې کولای شي د یو استدلال ته عمومي ټولګي جاوا کې تصویب شي لست محدود دی. راځئ ومنو چې زموږ په ټولګي کې جوړه موږ غواړو چې يوازې د هغوی د لا محاسبوي عملیاتو عددي ارزښتونو راخالصه. د دې چې موږ باید د پاراميټر ډول د مشرانو حد تعریف کړي. دا له خوا د superclass مربوط ټول دلایل په زاويه په قوسونو کې وفات په ميراث وسيله پوه دی. دا به په لاندې ډول وګورئ: ټولګي جوړه . په دې توګه، د compiler موندلي دي چې د ځای د پاراميټر T کولای شی او یا شمیره ټولګي یا د خپل subclasses یو.

دا یو عام کیمپ. دا ډول محدوديتونه معمولا کارول کیږي چې په یو او د همدې ټولګي د توافق ډول پارامترونو برابر کړي. زموږ په ټولګي کې جوړه د مثال په توګه په پام کې ونیسئ: ټولګي جوړه . دلته موږ د compiler چې د ډول T کیدای شي پخپل سر ته ووايي، او V ډول بايد يا T ډول او یا د خپل subclasses یو وي.

محدودول د "ښکته" کټ مټ په هماغه لاره ده، خو د کلمې پر ځای غزوي د سوپر کلمه په ډاګه کړي. چې د محرم ټولګي جوړه وايي چې د T په ځای کیدای شي او يا د يو ArrayList، او یا د هر ټولګي یا ليدنمخ چې دا ميراث نیولی شي.

صنفي جاوا میتودونه او کانسترکتورز

په جاوا، generalizations کولای شي نه يوازې چې د ټولګي هم ميتودونو استعمال شي، خو. د مثال په توګه، د يو عمومي طريقه کولای شي په منظم ډول په ټولګي کې اعلان شي.

لکه څنګه چې په شکل پورته ليدلي، د م عمومي طريقه لویه مساله نه ده. بس مخکې د يوه ميتود په بدل ډول د زاويه په قوسونو کې واچول او د هغوی د ډول پارامترونو دی ځانګړی کړی.

که هر څه ورته ترسره کيږي څو د جوړونکی:

په دې صورت کې زاویه قوسونو د طراح په نامه مخکې کړي، ځکه چې هغه په بدل ارزښت نه لري. د دواړو پروګرامونو له امله به وي:

Integer

تار

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 ps.delachieve.com. Theme powered by WordPress.