- Android alkalmazások - szoftver kibeszélő topik
- Honor 200 Pro - mobilportré
- Apple iPhone 17 Pro Max – fennsík
- Így lehet kiszúrni, ha kamu AirPods fülest akarnak eladni neked
- Samsung Galaxy S23 és S23+ - ami belül van, az számít igazán
- Fotók, videók mobillal
- Samsung Galaxy Watch (Tizen és Wear OS) ingyenes számlapok, kupon kódok
- Hamarabb hajtogathatod az iPhone Foldot, mint vártad
- 7000 mAh-s aksit kapott a Motorola Moto G57 Power
- Okosóra és okoskiegészítő topik
Ú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?:))
- Android alkalmazások - szoftver kibeszélő topik
- BestBuy topik
- AMD Navi Radeon™ RX 9xxx sorozat
- Honor 200 Pro - mobilportré
- Apple iPad 11” (A16, 2025) - a táblagépek vanília fagylaltja
- Star Trek Online -=MMORPG=-
- Robot fűnyírók
- Apple iPhone 17 Pro Max – fennsík
- Le Mans Ultimate
- sziku69: Szólánc.
- További aktív témák...
- Gamer PC-Számítógép! Csere-Beszámítás! I3 14100F / RTX 3070 8GB / 16GB DDR4 / 512 Nvme SSD
- Lenovo X1 Yoga gen. 6. // i7-1185g7 // 32GB // 512GB // ÚJSZERŰ!!! // ÚJ ÁRA 1.408.990.-Ft!!!!!!
- Szuper áron eladó Honor MagicBook 16 Series /Ryzen5-5600H/16GB/512 SSD/FHD/IPS/144Hz
- Telefon felvásárlás!! Xiaomi Redmi Note 12, Xiaomi Redmi Note 12 Pro, Xiaomi Redmi Note 12 Pro+
- 27% - HP Omen 35L GAMER PC! Ryzen 8700F / RTX 4070 Super / 64GB DDR5 / 2TB NVMe! BeszámítOK
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest


