- Red Magic 11 Air – vékony házból süvít a szél
- Csíptetős fülesek csatája – Sony LinkBuds Clip vs. Huawei FreeClip 2
- Mérföldkő a szilárdtest-akkuknál: fontos lépést tett a QuantumScape
- Újabb óriásakku a Honortól: a X80 lehet a következő 10 000 mAh-s modell
- iPhone 18 Pro Max: kis kapacitásbővítés hoz nagy előrelépést üzemidőben
- Android szakmai topik
- Külföldi prepaid SIM-ek itthon
- Fotók, videók mobillal
- Milyen okostelefont vegyek?
- Red Magic 11 Air – vékony házból süvít a szél
- Mobil flották
- Samsung Galaxy A72 - kicsit király
- iPhone topik
- Samsung Galaxy Watch8 és Watch8 Classic – lelkes hiperaktivitás
- Samsung Galaxy Watch (Tizen és Wear OS) ingyenes számlapok, kupon kódok
Új hozzászólás Aktív témák
-
Szmeby
tag
válasz
#74220800
#9101
üzenetére
Nem egészen.
Van 2 PolyLine objektumod, amit a Bsp10-ben hozol létre polyLine és polyLine2 néven.
Fogod a polyLine nevűt, és ráhívsz az equals metódusára, paraméterként pedig átadod ugye a polyLine2-t.A történések ezután az equals-on belül zajlanak tovább. A korábban polyLine-nak nevezett objektumot az equals-ban a this kulcsszóval érheted el (amit többnyire nem kötelező kiírni, névütközés esetén viszont kénytelen az ember... na mindegy), míg a polyLine2 most már obj néven érhető el. A csavar ott van, hogy az equals szignatúrája csak Object típusú paramétert enged meg, ezért az obj paramétert kénytelen vagy Object típussal definiálni, erről viszont a java már nem tudja, hogy az valójában egy PolyLine objektum, így a spéci metódusaira sem tud ráhívni, és a field-jeit sem látja.
Úgyhogy castolunk, megmondjuk őnagyságának, hogy ez bizony egy PolyLine:
PolyLine other = (PolyLine) obj;
Megjegyzem, most ez így működik, de ha megpróbálsz egy nem PolyLine objektumot betolni, szétszakad az egész, tehát érdemes az equals-ban előbb megbizonyosodni arról, hogy valóban PolyLine-e (getClass() metódus felhívásával, instanceof-fal).Ezekután az other változóról már tudjauk, hogy PolyLine, elérjük minden metódusát és field-jét, például a hasában lévő points listát is. Egy Object esetén ezt nem tudod megtenni. És ezt a listát össze tudjuk hasonlítani a this objektumunk points listájával.
return this.points.equals(other.points);
Rövidebben:return points.equals(other.points);Tehát listát hasonlítunk listával, ezért működik.
Ez nem castolás, csak meghivatkozzuk az objektum egy field-jét.
Castolásnál a változónév elé zárójelben megadjuk azt a típust, amire castolni akarunk, és ezzel aztán azt kezdünk, amit akarunk. Az "other.points" nem tartalmaz semmilyen zárójelet meg típust, ez csak ráhív a points nevű mezőre az other objektumban.A castolás elhiteti a jvm-mel, hogy az adott objektum valójában egy másik típusú objektum. Itt nem változtatunk a típuson, a this és az other továbbra is PolyLine típusú, és mindkettő hasában van 1-1 lista (points néven), amit felhasználunk az egyezőség megállapításához. A points.equals() tehát az ArrayList-en található equals metódus.
Ha a this-t és az other-t hasonlítanád itt össze egymással, az ugyanabba az equals metódusba hívna bele (rekurzió) újra és újra, amiben eleve vagy, és addig pörögne, amíg el nem fogy a stack, majd lehal az egész. Próbáld ki.

És kérdezz bátran.
Új hozzászólás Aktív témák
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- Kávé kezdőknek - amatőr koffeinisták anonim klubja
- Képregény topik
- Sub-ZeRo: Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
- Horgász topik
- RETRO beárazás (mobil, PC, konzol)
- Óra topik
- Energiaital topic
- Direct One (műholdas és online TV)
- Android szakmai topik
- Parkside szerszám kibeszélő
- További aktív témák...
- BeQuiet! GAMER alap! i9-14900K / Z790 / 32GB 6000MHz / 2TB Gen4 / 1000w Gold! BeszámíTOK
- SteelSeries Arctis Nova PRO PC-Xbox headset + GameDAC GEN 2 + fülpárnák
- HifiMan Arya Organic gyári fejhallgatókábel (6,3mm jack - 2x3,5mm jack) 1,5m
- iPad Pro 11 (M5) Wifi + Cellular 256GB (Bontatlan) 1 éb garancia
- Eladó Asus ROG Nuc15 (2025) - Ultra 9 275HX, RTX 5070 Ti Laptop, 32GB/1TB, hibátlan, magyar garis
- Szép Apple iPhone 13 Pro Max 256GB / AKKU 100% / 12 hónap jótállás
- Bomba ár! Lenovo ThinkPad T470s - i5-7GEN I 8GB I 256GB SSD I 14" FHD I Cam I W10 I Garancia!
- BESZÁMÍTÁS! Samsung Odyssey G7S28BG700EP 28 144Hz IPS4K 1ms monitor garanciával hibátlan működéssel
- BESZÁMÍTÁS! 2TB Sandisk Extreme Portable V2 külső SSD meghajtó garanciával hibátlan működéssel
- iKing.hu Samsung Galaxy Z Flip3 5G 8/256GB Black használt 6 hónap garancia
Állásajánlatok
Cég: Central PC számítógép és laptop szerviz - Pécs
Város: Pécs
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest



