ЭЭМ, Программалоо
Java генерикалык: сүрөттөлүшү жана ыкмалары
Java тилинин пайда болушу менен баштап, албетте, анын иштөөсүнө жакшы учурларды алып өзгөрүүлөр көп учурады. Бул олуттуу өзгөрүүлөр жөнүндө бири Java жалпы же жалпылоого киргизүү болуп саналат. Бул системалар гана тил ийкемдүү жана түрдүү, ошондой эле маалымат түрлөрүн алып жагынан алда канча коопсуз кыла албайт.
Чынында Java жалпы кодексинин генерик киргизилгенге чейин түрү шилтеме объектисин, жагынан гана эмес, пайда болушу мүмкүн эмес. Мындай шилтемелер кандайдыр бир нерсеге өткөрүлүп берилиши мүмкүн. Анткени, Java-жылы класстар толук Object класс мурасчылары болуп саналат. Бирок, бул ыкма максаттуу түрүнө каршы бир объектинин көрүнүп кайра коопсуздук түрүнө байланышкан көптөгөн каталар бир булагы болуп саналат. да күнөөлөрүбүз үчүн мүмкүнчүлүгү жок бардык муляж, кыйыр түрдө жүзөгө ашырылат Жалпылап колдонууда.
Java генерикалык: сыпаттамасы жана үлгүсү
Төмөндөгү сүрөттө үзгүлтүксүз класстарга жалпылоо колдонуу жөнөкөй бир мисал карап көрөлү. Ошондо Java жалпы бүт ааламга жана нюанстарды бир кылдат экспертизадан өтөт.
класс арыз Коштот пайда болгон жол кулак салгыла. Ошол замат класс атынан кат Т. көрсөтүлгөн ачык кашаа, бул класстын бир мисалы түзүү жүрүп жатат толтургуч бир түрү, белгилүү бир түрү менен алмаштырылышы мүмкүн. Ал төмөнкүчө чагылдырууга болот: Pair
Эскертүү: конструктордо качан Java менен, максаттуу түрүн көрсөтүп сегизинчи нускасы менен баштап маалымдама-кичине жарыялап, бош калган болот. Ошондуктан Жогорудагы мисал катары сынга алат: Пара
бир тобу ушундай жол менен жарыя болгондо, анда анын денеси кендердин айрым түрлөрү ордуна, шилтемелерди, ал катты колдоно аласыз ыкмалар менен кайтып объекттери. качан класс объект түзүү T-жылдан бери бул учурда биринчи жана экинчи талаалар түрү бүтүн болот, белгилүү бир түрү менен алмаштырылат.
далилдерди жана firstItem secondItem логикасына ылайык, тиешелүү конструкторун айтылган эле түрү бүтүн же колдо болушу керек. Сиз объектисин түзүүдө көрсөтүлгөн эле башкача бир маалымат түрүн өткөрүүгө аракет болсо, анда компилятор бул ката жол бербейт. Ошентип, талаш-конструктор катары боло тургандыгы төмөнкүчө: Пара
бир нече параметрлер класстык түрлөрү менен Жалпыланган
жалпыланган класстардын да үтүр менен бурч кашаанын ичинде коюлган түрүн бир нече параметрлер жарыялай алат. Pair класс келтирилген учурда тарабынан кооздолуп жасалган.
Көрүнүп тургандай, Сиз кашаанын ичинде бул класстын бир мисалы түзүүдө параметрлер катары түрлөрүн бирдей санда көрсөтүлүшү керек. Сиз Карта катары түзүлүшү боюнча бул түрү менен тааныш болсо, анда так ушундай ыкманы колдонуп жатканын көрүүгө болот. Бар, биринчи аргумент ачкычтын түрүн аныктайт, ал эми экинчиси - баалуу түрү. Бул жол менен жугуучу түрлөрү жатканда, бир нерсе талашып дал мүмкүн экенин белгилей кетүү керек. Мисалы, төмөнкү жарнама Pair тобу, мисалы, эч качан туура эмес: Pair <сап, сап> Келчи.
жалпылоого айрым өзгөчөлүктөрү
андан ары улантуудан мурда, ал Java компилятор класс Пара ар кандай жараткан эмес экенин белгилей кетүү керек. Чынында, жалпыланган түрү бардык маалыматтарды түзүүнүн жүрүшүндө алынып салынды. Тескерисинче, Pair классынын атайын нускасын түзүү, тиешелүү түрлөрүн алып. Бирок, программа дагы классты гана жалпы версия бар. Бул жараян Java Generic тазалоо түрү деп аталат.
бир маанилүү ойду байкоого болот. Ошол эле Java жалпы класстын ар котормолоруна Links бир жана ошол эле объектисине көрсөткөн эмес. Pair
жалпы класстар боюнча чектөөлөр
Ал Жалпы түрлөрүн маалымат үчүн гана колдонулушу мүмкүн экендигин билүү маанилүү, бул параметрлери жалпы класс Java аргумент класстык түрү болушу керек өтүп турат. мисалы, мис, бул жөнөкөй түрлөрү, эки же көп, өткөрүлүп берилиши мүмкүн эмес. Башка сөз менен айтканда, сап Pair класс жарыялоо мүмкүн эмес: Pair
Дагы бир олуттуу чектөө параметр түрү мисал түзүү мүмкүнчүлүгү болуп саналат. Мисалы, төмөнкү сызык жыйындысы ката себеп болот: T биринчи = жаңы T (). Бул талаш толук класс же абстракттуу, ал тургай, макамын өткөн жокпу, алдын ала билген эмес, анткени, көрүнүп турат. Ошол эле Arrays түзүү үчүн барат.
чектелген түрлөрү
Көп учурда ал жалпы класс Java үчүн аргумент катары өтүп турган түрлөрүнүн тизмесин чектөө үчүн зарыл болгон жагдайлар бар. Келгиле, биздин класс Пара биз аларга мындан ары математикалык иш үчүн гана сандык маани ичине киргизип келет деп элестетели. Бул үчүн биз параметр типтеги жогорку чегин аныктоо керек. Бул бурчтуу кашаанын ичинде өтүп, бардык далилдерди тукум кууп өткөн бир superclass жарнамалардын жардамы менен ишке ашат. Ал төмөндөгүдөй болот: класс Pair
Бул жалпы кабыл алуу болуп саналат. Мындай чектөөлөр көп учурда бир эле тобуна шайкештик түрү параметрлерин камсыз кылуу үчүн колдонулат. Биздин класс Пара менен болгон окуяны карап көрөлү: класс Pair
"Түбүнө" чектөө да дал ушундай жол менен, ал эми анын ордуна сөзү сөз супер жазууну карата жайылтылат. Бул класс жиктелет Pair
Generic Java ыкмалары жана курулуш
Java-жылы Жалпы гана класстары үчүн эмес колдонулушу мүмкүн, бирок, ошол эле ыкмалар. Мисалы, жалпы ыкма дайыма класста деп жарыяланышы мүмкүн.
Жогорудагы сүрөттө көрүнүп тургандай, жарнама жалпыланган ыкма эч кандай чоң келишим болуп саналат. ыкманы кайра түрү кичине коюп, алардын түрү параметрлерди белгилөө чейин жетет.
баары конструкторун үчүн ушундай кылган болсо, анда:
Бул учурда бурчтуу кашааларга, дизайнер аталышынын алдына койду, анткени ал эч кандай кайра мааниге ээ. эки программалардын натыйжасы болот:
Integer
аркан
Similar articles
Trending Now