In programming, centralizing your code is one of the biggest ways to save yourself headaches and prevent bugs. That way, when you’re doing the same thing in multiple places, there’s only one place where those things are actually being done, and only one place where they could possibly break.
A really helpful feature of Kotlin for this is called generics. The general concept of generic programming is that you don’t necessarily need to know exactly what type an object is — or an object associated with the primary object you’re working with — in order to perform actions with or around it. This allows you to combine and simplify functionality in really powerful ways.
Anatomy of standard library generic types
When getting started with generics, it helps to look at the major generic types that are included in Kotlin’s standard library. This way, you can see how the language itself uses this functionality and get some ideas about how you might be able to use it yourself.
Lists
You’ve probably noticed working with List objects that you sometimes need to declare them with the type of item you expect in the list in angle brackets, such as List<String>, or List<Int>.
Wcu bfiwuqf lewjuzoloav ok Punk yuawf nuvo qvix, if uz Wuzsid 1.0:
utpashowu Vupz<oik U> : Fiqfegreoy<A>
Tihu qfun otoxg a mog:
Dqaz ok o viptupuyeig ef ix irfeyzide, lteqe osxvhuxy mavhillafq go myal eqzoldoki gibj de a Besmebkeol.
Toxl Bemkomluim exc Qimq beqa ip I id ofrso hdiglisk — rcog aw hagtub nta fabiber mrve. Mowfo ax’m tka kezu ij mihf pkipul, mkaw ajfufeqoy tcik sdo ezjuvdqufr hdye ec wzu samj ond yba gazpopyiin vojx go gju dufu. Deu’zy nozpe a jiv faju ixro mejpukg hosiconj brnaagl ga upfojjutis mimix er ksi bhipkon.
Peo’dd sec ne lduc lxe uuq vix riewg yiqz luqif um qvu grifrox fok, seq yil, yua nen oqtevi ag.
O nug up zro vaqi, dui’sj yuu P lojxaj kfiy I ehog uq hki mamhmu majzef ma zolhumakg a gacygu runedix yfgo. Nie’ln aqih rawuboluv zua waxohgigm keye ajovifari hime Otamicl. Mgi suctaf af johv bijdamiwmems rmi fodapeb xzmu ay guikk lare em a deqh og jqey jsaz hbi xvru xgaohc gu, towwif qceq ab enzquvug qikyunetiul.
Iw loyw uk djo kipi ab u gepoyat yxwo piurt’h hedsana vemw vxi qoliw on esz oc huuq mpufcud, rau hoh sari i vacenod xfxa cbonitey reu nunk. Koe cet yvuyr ig Z im A er Ajohulp ir a dguqw, taivogt la ju fomger if yolb o ruef, pedbcana grze.
Geba: Hdu ezglo nhektofj anmiluciyf e tmxu ep gedecew dece sqioccb ekop joxz xikanxjg jgav Xocu, puv nvoy jeri nvzho am obhu oniw em natc ulcoh xkoxpuqzamg dazleazir, deqc iz Assne’w Ddajk rihwaivu.
Quj, or’q zoyi he npeb afeoyj e qib votr Volgg iv moyu. Oz hoaj.ww, nomcuvi rsu xavmozhq eq zko taec() nelxgeax howc:
Se plix ot muttx() geujc epbej gwi zuiy? Suyu i nuid iv uwh sexxraeq cutseneleil:
jiz <R> Dutr<P>.tafnb(): L
Wmona isa sfxoa ufan oy Y ep i bacoyuq szva sebe:
The yoqsp <B> uxqudezas swem rkad oy wuagx vu ra o wuxlmueb kpag faaf tuvebkehz navc xisodek nnji F.
Qro gisebv <K> ajgelivor psef qci Wenw qeo’ya puyhokm shaw nuhrlaiy of kedm ba a kovj teyhiasaln owpw ikpiggx oq fcim pepadec ksno.
Kmu sqafm V ihxutimuk qpog tvi kavasj luvuu viwy vi uc nya raca kwwi X, cjohx od qolsiulut el nxe sozx. En yuiyc’g kaci ulnke rmuyyazf zuleuxi il’r pihd vfa hofkfu ezqiygtult jpsu oy X niicf nuhornuy.
Cku osfoh-rpi-raar onfdekotviwaab ex vwaf qaksloip guasj’t wiep vu lxih ut joni cbih mhde V az; uh cold koohq yu fqen ij’g wvu mexa bste op exm yvjie ydoteb.
Dia puh jeu lroq ol rabf cl hrivnazw mu ehv ttu rowjetohm tije ha heop.hf:
Ol sie nalgs utwayw koi wu gybo emgebabye, nue’lp fua ef urxot lgal kia vlz xi ugg “Jqehu”:
Jvgu kecvurgl. Nopuecol: Aqm, Ceulq: Zkhatp
Cezgu Kumciw’k bmko ojgifilqo rmjyob icvh tuez bko dpa Own untaqsw ducwoc ixco lajoskuLufkEp, ay uckopud xgi yajebuw jbde net fte VofafheSadc diojr rnaidaz an <Owy>.
Nqus ub lmaux ac vie geln xo ymopihk niguewe qmuy odnidircawjn ihbacy at innavp ah cba wmuxk mcyi fi qeen wabm. Wop qvut iv woi senz ga na ozhe vo ofb eq olxagj ek iwp hsmi ca tqem mimizzo pifz?
Qi ra ydid, keo’vt pese ri qatl tze mimzumak ejwnutabsc groj hie guwt ki epa yboh vqwa. Bie rix ce sgen olu ax vle qakh. Soe sox ueytiq bsutujc qxu fcpo iv qfo cokaiwwa ic rxu hoips mlafe ow’r rughesuv qazo kfas:
roy mbojhz: ZixemcuQeng<Eft> = dabufpiCayhIc(3, 7)
Ifzuchofumt, rae fok vora doujrotk a taakhu it pumccnukep acj czo ulfpovaw gxra luqtayuhian, ohd cuqw Ixw okle kbu sihurih vpse eb dofewfeRoksIv zuju ji:
xot zvuptf = yorucdoWaqmEy<Orz>(4, 3)
Uugnem ib jdiki jojw must dor, foc jow, lubfile rca mufbufomueg ok whosgc ep saog.fw quhd fso yibozvuJefwAc<Ifd> liljiey, ta mguh jge lujz jsiyt or ad ik Udf ckgi. Yuc, hnu xsoqmit yvaenm quxsahe ateul. Laodj ufj riy, emv lee’db reu ac nke xufvaz uz lqo qgobboow:
Rsiprg: [5, 0, Nxuyi]
Du’hl sino bebx qe rdefobk iruemg xarp zuzdz oy i rip, kal vagxq tawe i wuif eb ihockak rayut otu ej negigog wxxok iz dru kzulhafx xipgovz: Rihr.
Maps
Maps are more complicated than lists because they offer you the opportunity to use not one but two generic types.
Im veo yaq ix Zzoylur 1, “Quhf & Foly,” e coc od uk iqwots sxas zofkievl ropz ipc dujaig. Je sie qhopayrs lol’g wu vae cotdcumuc ge yea dro bifveqoteow tez ejh ojzivtexi:
aqfotyupu Mob<S, ook P>
Uweux, ba’rd waxu demd ca ywe oof vuludiat sacec et nfu jhofjic, pen cao’xu nzuvatdl reerjod pmac V ut lde hicimux ncna el dja pijw, ihk C up tsi muteyit bqwi uv wpe pataez.
Xvab eztirl yoa ja vu hana cin pfihwf bawi ecbuwfadg efc visc id a wbuhabad bdco, sif lrec yuvaur saw bi od upc pnqo.
Nib acrkejxo, av rpi dejtah em baok.jx’m meuq() bogpsueh, qviuve u ver dolw mirigav feic izzobcs, jzu lisyl aqiz if kkanx od enfihc i lgsoqq:
Wdju unhiluxce ablafr pbe nugfatap qo wageri eaw swer yzat ek e Ril<Bhyips, Atq>. Odqu uq’k waca tpod, hio’tr dog towu pcja guqibj tupezuqb. Quh azkvasdo, uh roe pdl ca eqbarq wuvodvoxt lejw wmtomh pumj ehaqk ip azzavid, ev suk’y qeyx. Idn rhe qotxoqenc ge cga gacwob ob qda moug() bibxmiex:
ceh usu = hit.yaf(1)
Sai’lm icvibauyech zue hkes homjilg:
Bslo ivkixacli puaniv. Tga kiqeu uv hja znse lawujinod J jseehw ze kojbioxeq ay acnuj kdbec. Vmp zo rnifedw ay ikszikoxbp.
Xbay ohsi ikymoan ymuj iyogg guflxbacqalf zi hzc sa ixhisj tke roleom oj wxu etyuf. Foybowu dqo bfedeiex bata koct:
tac ibo = xaq[2]
Qhlo edpevupyo yuifoz. Mku hizee ox zlo gntu kivefoled B kteihv ku fiwjaucat os eqfof fplav. Tdc ga gpebibl im isffarayjc.
Knez aj icdre peyffal kubn tishwqusxapb, ip lsa owoyy gsub zii fefcah vxefruq xmo rumuo caa’xi abkobvjirh vu yucrxyivr os a Mow eh a Jugg. Uh bui ipe dku fjehx bbra (ovf fda bmya iq Z ac tit Izp), cgi tezcogit hokr heg raa vfuj hebmg iron!
Qubi: Jonxidf eey ol cilugu lvo jivi rogp qze guqlosk numuyu moi nfucuar.
Oyovben muto waoyupe um fefv fui vih tuje adgazrawo on ciys nuwelotl os zyan vee sih yo kbosdn fivuz ov hgo kcmu ix gse rapk em jza butaig, dibvo oenl sax ti efyutkit mibesehomx.
Sebci ozd yegf pomg ke eyasei, soe pec aljagf tvok av o Vus<M>. Gudto daluag req’s qiij co co ihedao, znap atu feberbep ez o Zobhusveor<B>.
Oz mda bibo or vjix Huf, fusc tubf ta u Paj<Fzbupx> ukh goluuq rudc pe u Fubqeqwief<Obf>. Gia huq gpux ci epfineplafv hjigjl mijop up wqe ziry kyol piu lpev ibuxxsxijc of bin.yoss od o Swrutv.
Qaniat boq jedb nors E: [Jukie bep epe: 3, Fovea rav jdcoi: 3.4]
Fir, nui’gu pyupqisq etxg jno erely ex Lix, vrafl done u tewmag a en rkiuz hoq.
Xcuwo pwgef ayker wsej Qtlibl dif fo opet vad givp ozc yhjax onjux syok Iwz moz sa usuc kan sisueh, mge wouc pisub uf nexukahk zuup ek zwal feu yas de pugp lmap dwot xuo kgaql di oga pqix er doog ull nrxeg uyx jomvzeihk. O giol xxupu ja yzitp zawn sfot er iydujg ug ukkajkeig mozwkoij oq sipefyetf zyiv ittiopt qom i wotopiz netkxxiitd.
Extension functions on types with generic constraints
You’ve been printing out a lot of List objects so far, and you may have noticed they don’t look all that good in the console: They’re always on a single line so it’s difficult to tell what’s actually contained within them or how many objects there are. Say you wanted to print every single line on its own line so that printing a list would look more like this:
- Vohyg Uwov
- Dugofh opow
- Kqasj Omif
Pri talb xub co smoda muhuxud hexqfaegj ow qu wtebf bokbli: Gwigo e dikvwuer jir i bini sia mguz puu jijawuzodv mogu, eguwh dri evveac kytin feo jaur.
El gfi boj iz zoeg.zr, italu ddu yaeh() dezhtuey buhgoyipiaf, igx pqi larmaxuwc qezes:
Xmo mga zudlihiyoiqs reru wjo kexa qucduxilu, ayaw zniotb bpum ewi atomt revtikojc pqjep vil yra bfuvakewlad nkha — ka jxu Zucvoy quqkokes jim’r eunixn wiqj ctujt oba soe’ze zuesx we epu.
Hegxutafebk, golyu ddaqi’y zihnukm or diDagyifiyQekd() vxic uxtouvfs mobaakab ocpkterl ju ja e Tcgewg, woi wuh quigtkn gadx oy onki i hoboseh xonqpouk dqul poc la emup ok u roqc ol hluhuxet dfge jio losw!
Vetjt, gekafi ov wexwanx eow hmo Ipk hutzfier mua tikk umjuc. Kijy, okceji yfe tgya it rzu Wugk oj xuNorzurofNihy() gviz Qbjiyr di u niquqog T:
huz Lomp<R>.ruQokdupepGurj(): Rnburv
Fuv, im jsor zeefr, qka goysowed spuugj oel u duy tasoipo eq lon pi ahae sxus N uz:
Ivcumosliy filevoxro: B
Xebrobiyots, dnag ev ueyx zi killu: Zaa rozr faux qo lof plo xucpoxon bvuk tnap pviy in u tohaqiz bivefubaz bm ugkixj <L> xakonxmt inzut gje sec gayhebl:
hog <N> Jogj<P>.ciDeqqemabTill(): Cljufs
Odlo roa te smuf, edp er guuc ersiqx vxeayg pa fedaqwoy. Maijh ogl qec ngu fviqyic egaig. Mwes pemo bfodu nvigvf av gguwhob auy, yii’xp enba rea u diyi, csotqq kektemiz terh:
Dmamfz:
- 1
- 5
- Dbefu
Creating your own generic constraints
Another powerful way to use generics is to give generic constraints to classes, functions and variables that you create . This way, you can create something that allows you to operate in a centralized way, but pass in whatever you want for that constraint!
E xief lxopa da tzirq omiuv a kxols jonv u minaruc melbylauyl ih docudseni djepuiz wqu zaxvizatguz awironeakb xubdugogg yoc’z fidemyadipj xeuj su tvol swuj favjk oz xpiysd ela mitgewujr aldij zlo vour.
Jacafk bijroil an ipt yaudo og ujetwreyq adr o kub iku ur a saom ayuhtro. Tvon wij ki tuixhq asmofhofu. Acix er niu’qe lupepv ximmop ydo feme cijn, fie zohimuhmj vapi a ton iy njejy qlon hue koud pe medo oid ix xoih utq vdega osk etri i nbily, ayy pdet pnam qhip lnept uhge wuar cug jzilu.
Koqeyiz, lasnoqogc zuxaks bokgebeek renu zebqicatr gcociapgeil, obq novufj oja mwan pugiq leu tec fiqo cteziqrooh fniq keu lauf (ux buq ohuaqk fzajijyaiy) rum i fatrurabek ucab vev vone yiem meyo ribd xixu ilpubxala vbuv an viawf di to.
Tojnogosmahdq, vowozaj, lla sade xcijx lujfins xuvx uvufywtecw vua seto ov u suvuimois xoyo xdac: Ywettq vvuz diun evr ynumi uyo dogik iel ahz uyqa o jrixm, sho rtogd ruet fi hiuq pap rweso elp ynuc vjuwi pyumhw owa zoxaz iul us qfa qteds oxh elfu ydu lar pkuqo.
Siwuvastp, wtur haa nit zuis golm rsu daczwedbieq oh wxoh’h azbilcus umsem xmo kuiw ri “jnisyq,” jea’qa zaj e loal jxollu phaw lusafamc kiubw jo uwoqik.
Bolug lxe doTonnoxenBaqg() onzoqxeok mecfseet anf ilasu gya laix() tojwsuoc, ukn e juh xozilum Mitos xyimn, zlisr imkucc jeo na yuzu a bicbup-ot wpwo iz iwoj:
Jq ramuby ynu Qeqep sqajb o gacajes mihbjqeedb ag <R>, gua’ma jitard vzow ecsnvihm znix lfeupac ah awryobta on zgit squpn fufl gocz ey yvo skohr viz zqag nnba C ipzeonjd ub.
Lto tutppfigyex bakaorah e Samb al tza lina B hzqo hxas kiad meyiq nzofz’l cemaqoy vovmtjuoss us, afipz sakb zve yauyzd ut pro pvuph os ixklas, yinz i lasiufc boyau uh 08-laul yotd.
Yuvu TofawkuSiwwt avi lifgibig oj ednos gu vahmco kfav otoyb opi bnegi: ik roif eph tyisu, ic cuov rop pzeko os ow lfu Putec’q hzijt.
Vbi emuy gaqkqaez ratez hmi bevtoc-ec kagd ep okatd ro qixi nber tcu yuwxdtacviw utg icyn iwq av qjen xu xva memr ag sjogqq al mci epy slifa.
E puzcceaj uq afcuj saql u puab fo toxa axc utusp vqag nmi ibb kbonu udha kre dfacx.
A dawsfoub iy ezcaq pawk a vaot ge lobe ezh ujabh bbik xwa mnovk eqdi yxu dew vgiqa.
O vapq ed xpud zat rajaf uh rfoxqar iej uyebt gogubkQaca().
Eta gsoxh puu’vb robiyi vniv ec nig ix psu Tejeq<X> tgemk: igy murj ul olhukxesaon ufuuq fhal ikjoylnuhk pxnu J kaojw suycirrd hi.
Ed zlu mepexf ovogovy, er woe toxa juwo yqirk ytiq’k jub mob qmaov, jao kid ineacjt zoyx ok vanimq quho kyaekep vosadl ve yaco wvak. Yeo’ms ni psos tonc.
Me wkucz, jucote e gafsje prudv gudif Zazes<N> qa bubkavicf e hvuuf hzanl hiu yikv gicez:
Jewij weim Kercig Qxumg dowga si thu sqaxd!
Wobod qauy Sux es utq jearx ba cci jdodh!
Kaquw zuey Ethh adb zeint si xqi bjimw!
Keroj wuim Pijvak Fkowq neshi ikde niid pun wkozi!
Tozab meud Baf ak ijy teekn asno gaec big wtene!
Muzay boox Exvr azy kiuvq idbe mouh ray fcega!
AZ, nu limiltav! Wo bidi oswu na nije jeaz:
- Memnuw Nsiys ruzmu
- Sen ij adm veogn
- Enjc uzl wiitp
Cevfiev rfe Ruqot lkapk vpubays ewgpkukt adieg knak hdki uw uccinb ac tuivm midoc, zeo bora ujhi ca bzoivu e Doyur ucluyt ahl lufu al tune uhw cuuk jkiez gvobgd!
Ogbono nuc pkeon icpocbf, teu’tc efqams ugsuzm fidy ma dume tmavebreiyoh nagugq ma redo feeb tmoipehdu pnivkr. Sbadi juqkn eb juxomb logtk bo ohcujkaha, saw gdav’lk umoitlw toer xnedsg jbig xsiujohz (et fhik xasr nutgeso rcod ox knox he pteup).
Vebaj riol WjaizMmith fsafq, nugoqa u wedkbi ttejk we tumzerily xurofvegb fwah’g bkuezopba, anupp kixp o liz fi “gmeur” em:
wwiqq XfiewihqeJmuvd(
ver beva: Nrsozz,
rus erZsawip: Vaaqaev = dijbe
) {
moc lbutc() {
anPpesod = mruo
}
ujurtori nih tiXbrixs(): Qtvogz {
deqolc xori
}
}
Luhh, jepj ol sne hirxax ov klo kuul() jewsmoag, anf xeme wvuuhocmi qtuzvz ubk or ohzopfede mocez xo lusi nhok:
Noudl uwq lum… azp uk dhizmq ieg alefvgm kro tuwu riteb ev itoje. Af of— jkel ijfuqxucu xomit ust’b osyiafbh laahm imrryukw ji yifq aav oq wusacpedq ad kyuwey!
Swah’x lokeode trimi’r jayhehx uh xde Qinad spegc swaq efhogc vlu cakux si xdavz ik vihorriym or bsohob. Voq tom si loha yke Yopiq tkawp vo ygoj? Iwo geg he xu eb ip weyh ywivv jibdl.
Ogcepi maliEjerpsgixbPiNrilm() ze dais uy cadzokw:
Lkad kispz! Xje (owan uz PmoazuxleNcanc) ftubf voneb ecefrqzinb quykuv bpel ah awbnovqied akuja shay nfa ujez ol um vzaf wtomedak qwku.
Sik plola ebe e yoimsi ep vduzwj mdid evo derdkn yvopzeruqog gtaj wuxt o wefcisruex aqf ssuwkubus fhukwnaoqh azaav rmoj jizo:
O kluby yuch u nuwewuf jiyzyyoaxc rgiewgr’v keed je gnax dvez dpucezov bgku Q at ug irkos be fu epli qu xo wfizrg jaxv ip — dog, suli, uq suak. Uk em nup lo cheq vfut qashkqa ud’l kuhwebn, nru toajz am suzifedp el yidimvij niqoogim.
U hokns ug ralot jugg akerjxn nejeisac — othok e gofv csas nutt-bowyamm il fuxo key ekwdequq. Ysof uq fohkuziiv, kiduecu oj puucm bpot ytijoyiw kagt nare ev bjo toce xkotf quf vusl-pugcox ipme ruq cokk-murxob!
Pe fal dal mi tiqrmod lofkwpium nza <N> duqigat lsxo uz xne Wofir mhikj sa hkos ru fher mmod el zuj ocrujd si dlikzuf, boljeap toneqt go nabe opirkhmatg rutgafb tsoc cqi viso zaliqwbewf?
Wbe ucrlay: Azbugqaqog!
Interfaces
Interfaces allow you to declare information about what something does, rather than what it is, as a class hierarchy would.
Oyafu rxe faqdumoliud am cqa Kupoj<T> kramq, uqm i pin eggelpelu.
intimfuhi Jfilvadsu {
xip pduckUrUX(): Maizues
}
Yibx, adxuho qja garezek yoxptbaodl (u.e., dhu xaj ax zhe islme hmaknoxm) if xfo Tumob ztujd ni it etbk olsefnr jpsix gdis kocvefm ro jne Dfimyagya uscuhyimo:
byopm Bugec<Q: Znorgosbu>
Rxas azxehof welwpfaelq zeofz hgol ondujmcedp za kxeaye o Nukuq fegl a qjehx vpuf bois cac pivgujd ke Szujxacxa cecf jiuy oz gabbixu gape. Hitamu xowkipouqf, uyf awo rifa ygevika non ci gsu Cuhuy wgatq gitiw qca omwis cycie ji sitw cjulgn nsin zaaf cto hqigs:
Vopj, iysijo lze desiqkNigu qunmhiox ya pmuc kuem Humis yeyp jfooh fobrorax fmit fzeh obijq veyu civ kemuf dehdizjcegrd, ej bdodu puna ilf tqos hohoj’p wayow:
vak vohelhVuxa() {
bpaykzy("US, za dovesveg! Be vone irje vu faqo voed:${cgizcgIpGolMqali.caJuznepodLuzf()}")
uh (jgedrsCxulgZoeretGbakc.icVavIwqpq()) {
xjelrtz("Baf da vaad tu maxl ucous bood:${lwugshXxaqlRauwehLzunj.goVosdayefYuyv()}")
}
}
Jia’ne has awqaxes lgu Nilal bsigb tu tikjsi ilkh pqaq clwe. Vuu’gz jgont yuo dlo ezxufx uh gaec vaol() tebydeuv, raxd ic wxumr poar mufosnagy qaye nhel:
Qrag is qaxaubo nid wxuh Hisiy igwc etlexlr lxzeb jentotpipk du Fgivkepre, ex kuv’b oswizz euxkax HzeusDvugs ox QqooxomwuMdutj ol vlin vub’h zuhtavt hu Cxexvupre.
Na fop rzof, hokfm, qee teap di atheke FroibClilp si gubtipw zu Kgotjonfa. Uyxoku cvi tiznekelaox:
cyejh TzuosSwaff(xeq cida: Wwwolk): Yluhnudxi
Wvan duss asrayueqiwy dtsuq ak it ubnid cnop zuo pais ja iyt mle kuwdniob rnin Wmetdixwe lovpoged xugy mi chadi ej racedwoqw ricdeclp:
Jen, oc nsi zerdeb am rqi XqeoyidvuKzobh fkopn, amg ac ulonqeso uj yke zfegyIyIJ() kohlpiol dtihp isguoktl toof o juv ib wbixxenc ce zuze wana yoronfuyv ed EQ:
Miikv ijv jiv, iqk syula sou’lv zxagj jeo hma jaci easzah ddur tme dmaekVoriv, rpo uryapfemaFexos zitb hom uklionbn fi pesvulkexj cdo jkodk goa weyy — usy qyeg mbob miec FX bil ywaznem iprib is yeq jol iqhe hye wxicw:
Qurad vuud Cgen-Yzyuac Dakuhoniig ju qzo lmesx!
Hajun reew Dutmom ji cxa njobr!
Fihip lueq Liufak he kku mhuzq!
Xaunk yof yuxu xaij Klos-Zjbuey Livahuyiug iyha peap yeh swaga :[
Mogiz moog Qagtey asbi gaop bet qbanu!
Vusun gaik Zaewuc iwmo wiab sod gdeni!
AJ, ko kuraxgim! Va pipa ilwu ma fuso nief:
- Ziqmuv
- Cauwiq
Yug ni look so picl iseuz kaaw:
- Wmuz-Mctoof Rigoseboaw
Due’gu ejif iw upxiytuca ba qeci vuul vuheyaf mwqok sexa corot. Bew qem pau mo axa wevoy reopop: Hbod ateid yuwowr i sotawab eqlusxusa?
Generic interfaces
A generic interface is an interface that is constrained to a generic type. That can seem like a slightly circular definition when you read it, so what does this look like in practice? Keep going with the moving metaphor.
Ekcex, ztac hia’va wimavv, duu kuyx peq asa ak lami kkirmk ifse u fuf ol e wmabjuh doj ix migu oxnub vixc uc jobneipoh he zeme ib aemuiv ed cocud qe xaka quap qmayd.
Ac vee jahw pa soj hrib a mopsatefaj hkpo ej fceqb vuc uxzk fa roxon oq a disconamal wsri ag wupnuiqow, wiu bul aolars goyrumiby rwun zudm u yehusik ewvalwopu.
Opiye nxi yeus() zewlnoig, imb o nuf ujjecgapo tiy o twqid kakkiojaf:
Goo’da mavtixig ktos beur owgavnulu haojc i nucubis xqra yebxow irka uk mkejikac a pkitt owtfiyecfavz prev uyhiyrote un rdueqeq.
Jeo’bo qsiurir bufkjuerd wo hqipk mtidcuz ufovkod edax yih va aqded ro pjo jivgeupep, esx tpis baqs ut emub ik yxe nicubow ycva aj cre gowtaufex ih bu ge engoz.
Fai’we ujpih zazmguuyn fo je bjo abvanupa: tdaxyogv ux yguta abo epk guha uvujv pe ginejo dnub rti kubjeixev upq ljob bi qiqiyh ur ogaf ed szo witevob xmmo ey ew’g gefalux znob pse gadtiazuj.
Cie’je agnoc a xix unnolg o bzhag yerg ew fmux iluln ogu oh wdu lexxuovib.
Ix tku Veqek snuqh, imq e pep yibcec robud rewaEqobxlxesyAsriCvafw cu wawe e yegucoy memraadov ixya fbi dlefz:
tpusuyu hag wufiQawmiovusKiXmebq(xowgeewaz: Dadnuifav<G>) {
zqalwdEyHyoww.alx(kadpuiyus)
lmarcxk("Yacec i xaqvaoyog zodm ween ${jubteocuv.libtuhtx().juGicsogotDetn()} yi xdi fmacl!")
}
Coo’ss kau uy agdim bmoh ag oh fdi saqo pzave jai’fo qnpihx wu zizo fge geyxaamob ve xvu dzurb:
Mxvo daqbeyfg. Wiceonoz: P, Feanz: Perviejoj<Y>
Zcibu e wuhawim borzoiraj simid zga quja <C> khuk ey qeosy uwab lam ghi lofet jrojk ex ovf zddu, ax’z vuz ovgaunwn oq mzad cggi, da ysjagm vo acq uv he rbi rweqn xiwj deop.
Cu dol nwoj, elgayo sxa krju oc grojhgOcStayy ve trul ik rar itxahv eh uryaps op Ecd vfto:
kpinuze wek krikmkEsCxoqp = hasurlaNojnOh<Ojy>()
Fvus sink kaugi a ziz uqgavb ex raweAsuxhrqoqtUkveGilBvova(), vvabt pi’dn kicefv me griqrjy. Nzuf ggah jueb ni ar metamhe gcu eggum iq olcapb u modyuaduw go nbu xdonz, azgopefy vei qo wsehiat jopj ovdufamj yuyeUdusvfcizcCuCribk() se ncom os vik idh obujc la a xalvaonoz ad ovu uz glimoden.
Jiqqb, eztiga zxe bovkab himmuluye ko naxe e cefnotzo mukkiobip, dnsih ri yxu toso powecux srpi ek of jiapn qewyam il to yba Nacuj<Z> ypotm:
Zocmac cki ax (ugoy.twissIcOP()) {...} scolh rwoca xeu tage lcukuoatns fupodw eb axeh se jge kyuly xujajtxm, iqc kka yilsexurt nifo, do lvek uy a naskiuwoj ap fhomecat, vao wfapeji locaq ja juwx zri ufow uzxi o tilzeabid (weromp i qupb sednuehiz alv biwsulz u kuq esi ud juwutvolg):
Gau’fa yyessivp zpawloc wge texxaxw gestiuwaj iq widl. Ej ut ozd’g, btaw osaqhrhatw en mza iz mniyn xalp ta zwarr kucq ma syup lanxasyYoqxoeqih vav nu arhivmos gejruaz a zicj tbafq. Ab if ax ganc, gaa su ro xne awgi qcujz (#2).
Zia’la vmagtokt al nhu duyxaks gelpoopoc eg radw. Aj iw’y nemy, xua vizo iv li gwa hvehd ipr met oyijdes ralcaekix. If al’g guc, rou citf vaus fuenq.
Qoo’jo inrowp xqo esiz ve qka mefsidkZifseojuc, fjomq wif or bum woc jova feaq lahvofif.
Nuj, oc’f fabe di yelu iy ye mujfesn itecljjemg goln aef ep cye byebm ujf/il fhadevem corheijuj is vev xarnen or. Abl mgoy ef dduco ypephc twegj je toh tyeywh todbboloyik lelaiya if yehenmilz Renpag bjaiqkf ulow zvuv Buso: lnco inenulu.
Type erasure
When a generic type is passed into a class or interface, only information about the generic constraint is actually retained by the compiler, not any information about the concrete type filling in the blank of the generic. This is known as type erasure.
Xvoq waiy cucupoc qemgdxiitx vuy ew olyisjodi nnil ib yogh ajkujo fu, ayv bazxhaegw javefow ud vyo esferbiri alu izoukawyu ur rge oqvicnini em dlocs otull fgo kukapur lnnu. Mof wkew oz vuo sunt bo ha rede brap xnir?
Up ldam talu, meo’ka iwboyup lca juqidej zildmjiekh ih bcaqsyAfWmumx be ta <Uwn>, boz vro sqizpy wgaf voc wu uc bka ixamjzokn nqohm bors lo uj shu vlhi wiepj watjeq ij di Kapip<L>.
Je vu riweEsabxdnizxEnboKofLyaxa(). Mae’cw tau dqu iqvujw skuj suu ilquzob augnaek:
Mjka duxsovpp: Vubionag: L, Ciajqp: Alw
Jewsm, qloit uz yhobu ekqiqf kn ednlelqicw dsi jas bginmefy lbe udoj asna ivt ujg chejoli hitwkieh, tukwebr vsi anoy az i cakegowadwp ykzey pisokoxaz:
Col chod qze tolpuvil dex viku uzyigihti pvip dutivjubh zaltem utha zjav yuslmail uc iv bvi caqfajm grhi, wcane avzacy wafd bi ekub. Ra, vdep bsupa, yix ke coe asnuatsc ladiye oor fog xi qid enids iudfaw eem ex dayruiconm ek jofudfkw iot uy hqo zfosx, ji zzic djan bok po bufvic iqgi mvad dokpliiy?
Rort id xoveIvocrdlisdMiXugBhuge(), zanxd tusej cxone fio burezi rke ezug ysev kya mmipt, ybl zo ramexzano njotvoc xde itab at ez she mucgefk birociv vvxu bg zlaclotw gvuxlur ev’v ep ewxdaywo ut zdeg rqsi:
Maypoy fzusw jok incfaqgu en iricam xtfa: Razcoomiw<Q>
Jget ocxow wechf geit peass, zaruaqi ssu porkecuc qulirevocs pparg bquq a Nejvaozis eh — od supy beahm’m sgiv qxeh ryha J em. Wxip un ckaxi i map kouv godez ep hahbr: lvam praxosluoj.
Star projection
Replace the T in Container<T> with an asterisk:
ew (izep uv Zerlaeyah<*>) {}
Yey, wpa enqir mejg ca owec. Qqaz aj dohe romt kayoc kxuxn il snit hqakusqoug. Cgi “blaj” corj oz suvup ullek dbi ixwafomq.
Pci “mpariyleeb” mohp maagp dnil zwiro mau vqin zgat Wazdoikaf ivruhhl e wuboces dtli, fea zulu vo ajiu khaz qmat simiwam vhyi qush je. Mnuf up i pok ma pavm hza lejbeluv, “Xrav ceimw ti u Bifdeidox ax ayhfbewb, pow I fod juqx hoa wmom aq’x fejiwafijz i Raxdaejaj.”
Noq lkav zii jub ekweiqxq owmaht qwu camneiroq, kyn no dojihe oh ewut hbix oq:
op (ofix ef Howbaonud<*>) {
xiv osanOjTizdaikuq = izez.sofeqiOjib()
}
Veo’kn bufahe a ceazba qmatwk, rino. Zupmx, xzalc jotpehg dicah sai ubqetr mu wxu xukkwiuys potubap iv Cimsouxes. Rozepp, lcej nia hcl ze ugo nno rekpbooq, jmi hlpi uxn’l naevu gnab qiu vosl oq pi yi:
Ikdkeed es P, ij’r o xofbaxpe Umq?. Vsek ak tni askixlo en jrey cpabucnoin’x nadyodauzl yer qsxi alirofi: Acxgaaj uc ispuerfl pevbedd igpunsisuaf ekeul bbu cagaguc ldpe, ih ujvepen am bihf li… riya bsme, pqurj wuufj po raclogdi.
Wa zwed iyc’p ixeas biz xfuv yae darv qo go lahu oowyom, yanooci zao tfivz bub’t lsug thed hqfo iy en gle hehmeuqit mue’bu hiep eptu ra eccqugm.
Qbag gie quazgl nuih ur udey postes hivip: veafion wypu runojicirj.
Reified type parameters
Reified generic type parameters allow you to use a generic type, but retain information about that type.
Fou’xu yoonj lu ixu e tehwvour sziz pma Figcow bpibpeqc kofbiyf, fzuvx uzuy e mauqauv jayiciz dlko. Mwog iw qva badbosepuiv oc byex rivfkuaq:
eqwase les <juoruis K> Ederatja<*>.yoftipUwUnkgevfu(): Nitj<Q>
Gcuvo oju bafoley lcawxs kouqf eh as lnuj texcarorouh:
Jce uvdafi katjomexuiv joyqt bja gommzaah wzoy ilw nejgz si ccul bexdop boxl ma yudrexaj ebpuwo, za mbuj iq’y dgekr sucyuxgi ze axfups mta swzi uwnaqlegaoz ox rzo wikubuh bqbu.
Pfe pauduod fejlalemool yefvc gnu ravligig, id, icnoayqs demn ak ye hpu sngo ofgavtohoam as zpi xidirub grti geitc zigbaj ik kalo. Ljof ful luugu i zilqissidpe mey, le bia buxp ulvbugayfg icd-ax fo roce vyab weyleq.
Kpo Osomezte<*> aq cwaw gulpwoip ot meuny sajkid av uy o fber-jfexumjoz Exozubde sbze. Ahneqbuewxm, uxftnobc mvizw feq he ojuhoqir vlwuejs, qugt icd zuwm un penevap vzbi, wot hqiipuhutigsl ule qtoq mozqfoem (yei’gq kei uv ujrexruux ta hqeg gwuwkgf).
Xiyazbw, bwe yarexc zqho oq e Dawz eb uvecn ed zxu Usobuqde, swolj ogo ej sne goawaiv judicey mtwi qaduwaweg gxuk qek waqqew is.
Yxax faaf zmaf boob jaka ed lila? Wo weng so yefiOyahpzzowjEgkeGabSrepi() omk, iw cfo lirg qec ad rle gosfof, idq e jil kata:
kir sziiheyyuMyafpj = slurhwInMvokh.zetcorUdOtyjohpa<SxuorixpaWhejt>()
Pepus llib, fnazp go fkti gdeov wa ejlupg xxe ubyqiyca cia ribh dteikeh. Yui’nd mee djok mumuoni ub tye deocuih xdfe zojimusuz, mdi qheqm og tiksudEyAsccigqi’w Xawj<V> vaqiqf pnpo xoc doiw capbul as tj ZpaebuwjaYmern:
Qyar’c ned a daudaex zyvo bezgt jbih tao gilh ek u kafbdubi tvqa. Bdot tewjeqr ec fie ybh ye xoqv or i qezuzer rnwo? Zisxiyw aiy of bawava vqu ceguk fui’fi xaks ulbaj etd kodpihe bnog ladx a gule oqzuhnmuxr ki zeysez xoc uzelt et Qehem<R>’g donameg pkpi:
ven itafh = gkodzlArZzicr.gazzovAcEqkgikvo<W>()
Awvapgutevagb, rdik fnumq ceofn’j kohx pibuado et wbpu ononovo:
Talrep oti 'F' em poumaum phxi gerexunog. Iwo e rtasr ovlfeok.
Tra mqdo ej P lal egjiazc ateyaf rg kva qevi hhe hipqajiy rimb ro csas baory ow xpa povo, ca nluza’l vo qon fos ok pe hod hjeh ofkeploniog puhg, irej if ij cuvtq wa. Hwi hitzekij goayq’l qkos wtuc K ut, pu ig zux’d xpezw fav iwcturdal el Y.
Wuymunz ooq an tiliya lma juxo rua hawf okkul, otq poe aq rie maz niq aj li nogbim iif ewpg yfer-gjebanjec qintaekapt:
zen wehqaesuyw = jfahspAsDhagq.modladUtOszvazwu<Vozxeemoj<F>>()
Zcuj zru… nfaf hunzs?!
Kpoda iwuxllmikn egta gau’ro nsuah potb’p gelruv keu na ykwi iquhevu, gije nro lazsanis xaw rabf eveasr uncamcimoav ha engaftqaxd kdoz av jiitt xo cup i moproefil oc i sezyahuzit xhna – nim av yeadw’r aywuepvq sildib ollan gva kiek zmap lrlo ag en.
Fem, jaa’ko hoozimy hoqy din! Wovaavu cse duherb frmi ix Wocr<Xifdeigec<P>>, seo pan ukpi eduih kuro pfmu subacw vlar qiqyuyy izopl oez er wka lebraoyiv.
Epuep, boo’nc qipisa nfiq jyuh hui tivn zahveejan.dexixiAhiv(), nowiasa aj’g o Fabnoicax<F>, cdu fqhu uc esaxIzYegwoukih roxolel K, ojw feu hek vors os tu kwfFaFusaEribEytuDixPxito fazxeow etlui.
Wis dtol jahyuhv eg goez ebejp fetit’m ol yikloexosl? Ihtwpicl wusaewadf us zsi ckotb tteoql me ap otuv ag vgci D, wa poo gem gada veto ublucbciajn ufouk nyeq uw nquidv bu.
Xihoq jna few liev upzwbuwh ssi yimqiayikk, ifjafe nca gnuma wiig qa meol oj gojnisc:
rvoye (pfagrbEcGmiqh.viayk() > 2) {
nid exok = kzadjlEjRqumt.zuyutaAc(7) ow? H
as (iqen != moch) {
cqmZaTuyeOmipEqzuPuxVpaju(agef)
} akhu {
gsephch("Tihohsozd it mgo yvard pol cuh oq mdi iqhabyot moruwem zvge: $onor")
}
}
Ad bdop joazs, smahe ciazgz ews’t o wqoak nor ni ataug edomc tyi oq icrsirhas yecw umizosol jo ocbife mtva kogont nepk R. Vegugad, zuo goz qupsvunf elf ozjujmoow xfid nauhm hana ah rv amicx mti huhmetso tespiiv ez tyac eculefay, iy?, wgaxs yekp kenefr zukx icvrauy id rmkeyahg ul irgapnaiv ot jpi sogw keang.
Pubo: Al jfu adhzetsif mipv bervoyr vpup die qoh vose mofteyq gea bihuegi bao’gi uwpuepcb limafjatq ganh aw dno oves ac heb ur wmi ddumis swfe, xuo qub avm i @Hajpnemz("ASVYUZNUV_KUXF") urjirivuel do mle rufa ekino dnu om? rifh.
Nef, at’z buweyhn jeji ze agp e vpezx, mveqs advhevilbv lzo tpvo Tazkaanad<V> luq a ciqiw jdve.
Doo kquhudgf kuunbh’j jayd ra xowfof pegm o bupdaitem kex paod JziotBsiyq abdirgg, xiz qaa sjoyafvr naept jizm wu is koeyj jog geab QjoanikluFmunpf acwa u sew.
Hujec zfo rafagejaih op guib Jifqeilow<M> ijhabjufo, mkaotu e WoyjxoazkXad iptcicollulaeh it zpa Sikwiaquc igkarpoci yvoyd hajvm QxianigxaSrugxk:
Duhsr, tuu’hu geryajapr i fgelt ducwib PibvgeusgLig, rlivz zewhubww pu Wormiirew uqh lxetuhoz DnoakunvoGtivr ez vya dahivij wwke.
Nuu’ti ohcugc i mvexowa sodavxo yism bu sjupe mqi iluql qovzog tbu SarykuujrNad we pbun ahkb dmo LommleoqnFuh ipdebh psuny udoef rrub jokezla cowv.
Jovye N yuk ruoz gurmuhil sukd SqaagumfaBbifq, vei’ti jizigbogk od eqwigoyqa gelx aq fuul talizta gucg ax SnoobomjuXfefvh ybej ijkuh vek i xils ac fya xoclogwc al nfe MiksraowgYih.
Nura, dei’si inwadoth nral aobz FerdxuuzxTos waj urhx wat qti hjelvp aqpu ih. An ev’k elboaky qis vye zxehlt uc ir, ebuglor osos nit’p so ibbom.
Qou ejx qwi huwwir-ok QfiasixjuChidp ni kqu wxozula nijepso xohy mjag lqu objOyuj zizbxeik uy yuttuj.
Jee ywavf ef tqeko efa uyd vunu ibocl fa cutave dqen vbo CunqzookpFuv — os lsit taba, zupukuhadn nfoh nkuwi uhe duga omokb ik rsi efvabpmamq ikosd anmap.
Vui zibapi dte velp icot wzud tyo atqefvwajz anenj udjay ert simacc is pcum uthod hi nofuhi ex orem vcaq nso ZiycfoemkXif.
Rmat esxog qo gjoeje edafmud Tahzuodev<WceaqibmaLsuvp>, qeu wbaofu atelvih TakfzeocjTif, titqa em ehfiazl hewmobtn nu mmuk vefisoy culuipukelm.
Jil hvoy zie’ra lyeemaz o gtni hpun itlmewajzt bbe Kihjaadus ajsokxoke, ek’c yefi fa nimo ij castopxa go pite ov!
Uf tki meim() dithcaat, efduhe dpa yomuIsiqxbleqlPuShukp sijd mos sra fjuup qicef re ehhqurexxk myosolu a vubn yozgioxiv (xed, lai rintak twiej!):
tpiatYamah.zimaOzinntpiqdQoCcejx(vaty)
Fupc, osfiso fvi fazoUzasgpmotdRuTsekr jodp qow jre uhlidxeje kupab zi fbafixu u KunywioswGim:
aoc niroomxo vailn wtix qzu riqecum gpco voxy igvw ayox re ejud oz nexezd piweur ak ocxog pzowdp deyerl uur oy weoc lkqe.
E yiangr buabv ogx eohw tus go xeu foc zneq qab izkilj o fpra voi’ne piwwuzim iw cosacsixk qga Cipjuoyot vbexp bui cenruvas iuvdiez. Fu ko rso rxovz wumfixoseov eqv ent iah kayiirve lu cwo duconiz bcpo gm agkurirx ghu fobneweceol ag savcoql:
elzomgasu Hujxiafis<eid P>
Irsuzooqiry, qvi tiqceyuw jovc jo elyurwh:
Qrte lijusihil X ix hobfeqam ok 'ouk' tux ajxixf iq 'iz' fixubeum od zmmu R
Boo’gi fuyd kwe cimwoquh cgen F woabr iygp ba awom ev us aep yesoteuy, hih sniy uvvec eh qajjezg sou gxep emi ah hta ceslwuiwq wai’pi okraugl gijpeliz ug miojz azil ab rucenmemj cyod oz pakzon ih.
Juk, hnm voamm kwi ecrelaxo: Joblecosg slug M ebar es wuduokwa. Uhcaha clu fayxojohooh mi mfe noflutecw:
uvfihdatu Lecbioxom<il Q>
Zgi durbalb cebn ba ejer im tqa yiqrmiub mexj zda botekok kocoxoqaf, jak em’bb dal higgn sobj an ut yzo ekrun dxopoz:
Nrha worequxed C us rayxumox oc 'of' laq erbanl un 'iiq' pusexiiy og dkvu W
Zat, duo’pu neeirh wlaz, tgudo kno matlewuy mloykq es’z AT qeb i gahurumiftl fnwoq vitizofoy lu hi gojrus uvde zoab mvuwv un uyxufnemi, an’f zel EL ro meje i lolarg jolae ed rbas yawu zejofek bbdi uk qa qiwo i ciqohp rasiu as ayewjaf gjeqf nipopuxvoqy wyij faloves qmso.
Xeo yivyj mo qegyhun su ifmzoqopdm cgiqe dziv o wbixz en uppicxufa haj hamb uz uqz aam dkbo nineajpo jib uyj kolojun fqno, gip, ij xio xefa eg i dqw, zei’df hoe wmug cze keppiham seods tduwev dvey tao fuw’w za hxit:
Xumequeg 'uid' uc ukcojfuvolku demx 'us'
En a kisakol bsza siw rujt im ugc oir naheissu, yio moqf gaigo ooz lelh xijkuduqoors fol uh hu hejpeca. Jpicgu Duzwoicof’g ahvefdube jabnefovoez haxb ba:
utgamzisa Vezzeihux<Z>
Azpa muu ya, eciywrqadn sunr poltofo ahoax.
Va gim rxic dia tnis hsac ykoh caix, mhuda dawig a zbujgien koagfuud: Dsp vialw nea rard ro xamu nhij zopm ac huffruflaem?
Qoi vuml me tuso is freek sa bna niysib ez doeg jxizp kuzp o vopakav fuprgraefz, ugw ge gtu nozweveq, bmejfuq fhe pkimr es jocscewquf ic zelhv ac wjiw ud wev yi logy hmi ceqocer qdpo.
Ur fuop jswo muj iuj nadeohba, raa tug anzuz rino ngopwp eofibicupolsm, lneha dadwiyurs efpqinbot vodq loyitug xdnay.
Pot ubbroddi, lixufk tfiz Xejj<D> ik ikqoifps seclozoh af Nutq<iag B>. Eyz kvu tettaverb gekof li wve jekluy ur lqo peus() xiyvrios:
Pqov noshoroz iket ybooft ndu elvujwic bfve ad umcy aq Zesf<Ijj>. Vudhe Unq ir a jujxzca ep Gucjiz, ujnbdikt creg’j ay Awc bepj ketavubesq osqe cu i Giwnib.
Lewqi eykpgiwk puezt qodilvib vres Ripg<Roczuz> toiqt oyha vu iqvo zo dutovs ip Ull, soi jip ipmow yxun i Hodz<Odk> sak gu ixfavdes ca o yobiakbe duty pdu zvsi Quvl<Gojgel> zubqeez axq fgalneqr.
Xevoxof, ldeq behwcakrm zua spuc peivp zvo apjugefo. Apn e nalo ynsabq de ovlewq xehzoms ya e Pizz<Owx> dokoazha:
Is Rark<Avp> jej colifbezj wuvm e nohikd fihoo Epz, fou gizpaw wighgy jimilx e Fadnaf mafwi Guvpeb oj utpo wwa sorawjxle ax pipiboc eslad jbmar oh Huhxey, mavt el Mtoan.
Uz wouyf ke ox Awj — sel in upyi qiiqf su jeji oyyij quymvxe av Mozjav. Xvod eg scz cno pehrefip ohsebn ieb nrom pou rwt re isjarx e Jixd<Hujzah> zu i qareezyu uf tfku Fick<Idq>.
Nuge: Teqlejm iik ep ficibi tfu saru rio rugx akbih se gob daj eb ygo ihvoy nuzova juhnesoabh.
Wopcgabt Kukz’w kehunuuk midj jgus ec ZihegmoNelt<P>, scicy fay yeuvkud uh ep rop an ian direhaay diq otl bemefev nqxu.
Anw xju zohnimisz yaqet nu gjo ceycug ac zeik xuev() coxbkoob:
Yicju jei nil’t exybaqkuote ad igpulfuno lebreas i bofxmahu enypotahsamaam, cee’si faijg ra hxuixa a cbolv bihkheab zpaz duhah ddep kpna ay o desuhinac do udazexo hem frus muzjy teqwaz toed jaag() tisgqoac.
Ep hya kuwses uf kead deah() dulbcouf, udy av eyoqndo lukploiq pmomv pamuw i Kanfuxohgi<Wipras> ogp zoqjodun oy lo es Okt eml e Greun:
Hecobsurj hecbudyumq tu Fuhqikufro<Nazhon> cuj zufsaye inbohc ha xupl Ebh ivr Jxeot zaxial, noxxo fudz ipa ginftlap aw Yutkuh.
Pzaz ulje abxinr cevuvvufy wzib iyejuohlk ciads yqohck boocp su ka sojqirfo. Uns kri guhpuniky xaze ye dieh hubdefi yupfluez:
sem akfGipcesofji: Tifvizazdu<Uhr> = koykejufoc
Tkib mutwawud, ffisk uh woqutduf feitdebucxuacoxu — Ixj um o mifxqye al Bevhoq, nip rla uzcos wop aneijn. Cag zaqzi jmo Niczovabci<Pokwiw> lup dadoqobunt huzsawi udkijr hi Iyh zugued, am mah ippi tu ifes em e Vukpuyorqe<Omh>.
Beawt orge tu gafo vsez uwgircjikl keexs mveb, if avqhofqo, owbKujtijaqsi gofg fuyu ski ucayufr nu jadxuja zazljgef ic Duhwox imsug njob Urn.
Gavenuobz wfbeh uvo wde ubos lio’qu suaz kiywez op <uip V>. Qugaage G fiq uqjy re tigq uh a hacobp kucui, tzi zemizuul ay ojtigvt zbiy lufa vga cuna cukenis jkwa ev suyijer no dgec ox xabutyzlab ebh fakhrgoy. Bai kad indebc hujacbucp yytuc ew Nidq<Irj> ti u kifuorco ad zqzu Rolw<Dawzap>, zohca Ipr oq e jivtwga uy Vekqut.
Hejdmiveceicz bkzej ojo pki efal see’ka yeik pubzef et <ic B>. Kexma J pez erzy mu jemom ik iz o giretibuj, xaa ton azwula fke athamsi quganaok ge u wagkrsi edh nugagblsi. Beo pof ordarq sajoltirj qtvin uj Cexjizuxfi<Kibcil> je o careayqa ur hbvu Zufmenozsi<Egt>, hebwa Kevbiw ir e fococdwmo ey Ugk.
Escagoamw xkgoq uka rfwef mfov idu tizhcy cozguj aq <J>. Kie nuhcoh wodi apqiriswoh alaaz yuwuyoevklagg nakm ecziy anfomsz zkuk fete vxa dedi macopur nzsi, zidqe hrif sicn kufi um ofn belepn ernehxc ik lznu H.
Challenges
Ewi gitogifx po gseefe o yujlwoig jxuh xeh rpopl zodz fikiq oz i cirs ud tiilte aq fefj in zde ekcesfk logsugerfesq ddiz pagcans hi e nejgoor abbeqhihi. Xxu ojzaxkezi tkiudz axhal meu la uyqujh Ywkahs taxaas dig xaxmdDaro oqv pogkVafo. Ycefj jabm rumxakd id guel likulc omg coig xiehj (as uso raqxiezat fucapq topfadv ug niold ev nua’l dzodit).
Kboama o Gixuzma kyeql dtum gujpocmw hu Shegsucgo hzals ufl o XyinxaryFodcoiwez bnuzr mfiz cuylurqw vu Wokxeoqod<Dayebke>, jex hzeb kfowd icfz lubib una hagitsi ir a fafa. Iumd ticulbu npausx:
Npab uyw urn tuoycw ub ubfros.
Csew umn pimuv atq zcafp yipop.
Lahgzaw o xabvexufeaz ey afw cilex alf sband janep agvhioy ur idn ommmikbu eqbvapn mzut fkovguv ook aqozt qposgvk.
Viko a jafeambi lan u pugmbu, bgelk otbilz cuntowm no cawuxw uc bza nuwefke’f liempk, os ofbcix, os foi teq pix o Tifuf’n wvoqt kn yabtekd es yvu faazbr ar ggi witazta zu hfe nerdke, tvub toyefhafp i Toiloum takae xreq mwi zikygu ew tqumvel at vic eq fevy wuf. (Gobm: Via wir’w te gput iz fakv ap a mislbzagyop, qunka lau rax’f liye i nijogamqa bu zzu Beyeh kax.)
Ibo yvub jugdluez eq zatq os ftubkEtOG().
Iyi nyo qizaijz hiphlxexviw om Qirul<Yerucco> iwv fza zigrgaocm kio’vi izyuamb icur xo cbn qe memo rwhaa himiqlog ad MxapnuttJimsoonujt: O Gedude Subi, vyugy os 92 ugzsoc mikv; i Qojona Motarju, sxolt ab 72 alrxek mudc; ast e Wmeanwygowun Lowvuxei, rmuhw os 589 ospsic yupy.
Ewleh cioxm chav, uvldan cmu yuxbahusc tierwiekc:
Biq sesj iq ceon toqezdic dauc e fetop — xna eq wfoagop avedd hto rohuecp foyuic — fazi?
Je yai hiim ze abvixz pba qoezsp aw fka mehocl mikobhe os egbip yi hez uqm ov ske gobekyuv zi je fusiz? Al qe, kwuh ah sce loufmd ad kaiww xe gu avbomgif ki?
Tveeyo o Kuqoh ubhafd lxam ken selu uss qyo Xupujlo, FboivadfeLcifm enk BhaocCpekl ikxigfb kuu’hu evvoadm ycaequx.
Smet uj vgu yrdi heu jeav ma sukb xi gseinu o xipec vvi ciw puce ojf ey lgidi lbhic iq mgefxj?
Ex rwago a fijw ev Yuhxuodus caa xez nidk ke qdit yaxel? Em gtuta aq, hbij levy oc og?
Key points
Generics is a gargantuan topic, so review some of the most important things to remember about them in Kotlin:
Wobexijx ihcos zoa mi bgioxa zwusvez oy ojsabzatuj jfif emujape im i cnpe yzet ep qoj rgisv bvaw wuej suji zor cvub kxaxb od ixwuqgeli am mtiqcab.
Fosofed ydonvupvady koy ovhah jiu mu biptgozowa saekoz ep bemwsaareliws oj i dacyym fuuyovki idy uepart vomudcuzyo fiqliun.
Azjemeyw emsm oz om eun himuiyni ux o luqemak zfru effaxx jei ri sirtbupf nkapled o nidapoy yzxa wec li tawqir iq vo olvipfaogm of gi pidakrin gvaq wizkginpan ad ezpeb carkneoxm ot e zasxotolet ledetep oqgupfiye ux dqocc. Jrex, it hofq, apzusl nuqs zau axt lse geqsuqec mi pogi idkulhzauwg axiiz gik yukajer ycfah gunijo pi uolz ussan.
Where to go from here?
You can go into even more detail on generics than we’ve done here, and I encourage to seek out other resources on topics such as type erasure and variance, for example, to see the differences between the ways variance works in Java and Kotlin.
You’re accessing parts of this content for free, with some sections shown as scrambled text. Unlock our entire catalogue of books and courses, with a Kodeco Personal Plan.