Hirdetés
- Hivatalos a OnePlus 13 startdátuma
- Android alkalmazások - szoftver kibeszélő topik
- Google Pixel topik
- Apple Watch
- VoLTE/VoWiFi
- Okosóra és okoskiegészítő topik
- Xiaomi 13 - felnőni nehéz
- Samsung Galaxy Watch6 Classic - tekerd!
- Megérkezett a Google Pixel 7 és 7 Pro
- Honor Magic8 Lite - a félig sikerült bűvésztrükk
Ú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?:))
- Hivatalos a OnePlus 13 startdátuma
- Assetto Corsa EVO
- Genshin Impact (PC, PS4, Android, iOS)
- Mobilinternet
- QNAP hálózati adattárolók (NAS)
- Április 30-án rajtol korai hozzáférésben a Heroes of Might and Magic: Olden Era
- Torrent meghívó kunyeráló
- Nagyrobogósok baráti topikja
- Android alkalmazások - szoftver kibeszélő topik
- 50 év után kilőtt négy űrhajós a Holdra
- További aktív témák...
- újszerű iPhone Air 256GB space black asztrofekete független Apple 3 év garancia iStyle vásárlás
- Armani Acqua di Giò Profondo Parfum 50ml
- MacBook Air M3 256GB SSD space gray asztroszürke Apple magyar 2 év AppleCare garancia
- újszerű iPad Mini (6. generációs) 64GB Wi-Fi space gray asztroszürke ajándék tok és fólia
- Yves Saint Laurent Y EDP 60ml
- Eladó Logitech Z3 2.1 fadobozos hangrendszer
- Eladó Dell Latitude 5340 i5-1345U 16 GB DDR5 Törésgarancia
- Telefon felvásárlás!! iPhone 12 Mini/iPhone 12/iPhone 12 Pro/iPhone 12 Pro Max
- LG 75QNED813RE / QNED / 75" - 190 cm / 4K UHD / 120Hz & 4ms / HDR Dolby Vision / HDMI 2.1
- Lenovo ThinkPad L14 Gen 5 - 14" - Ryzen 5 pro 7535U, 16GB ddr5, SSD, jó akku, számla, 6 hó gar
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest


