Hirdetés
- Majdnem megfelezi a GeForce GPU-k gyártókapacitását az NVIDIA?
- EUV-áttörés vagy marketingfogás? Lépeget előre Kína a felzárkózás rögös útján
- Félrevezető a Tesla önvezető marketingje, mégis zöld utat kaphat Európában
- Kisétvágyú Radeon RX 9060 XT-t hozott az AMD
- Új képmotorral mutat fügét a ChatGPT a Google banánjának
- Milyen notebookot vegyek?
- EUV-áttörés vagy marketingfogás? Lépeget előre Kína a felzárkózás rögös útján
- Milyen processzort vegyek?
- Majdnem megfelezi a GeForce GPU-k gyártókapacitását az NVIDIA?
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- OLED monitor topic
- Akciókamerák
- HiFi műszaki szemmel - sztereó hangrendszerek
- Pánik a memóriapiacon
- 5G-s változatban is elérhető a OnePlus Pad Go 2
Ú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?:))
- Óvodások homokozója
- Allegro vélemények - tapasztalatok
- Milyen notebookot vegyek?
- Spórolós topik
- EUV-áttörés vagy marketingfogás? Lépeget előre Kína a felzárkózás rögös útján
- Luck Dragon: Asszociációs játék. :)
- sziku69: Fűzzük össze a szavakat :)
- Diablo IV
- PlayStation 4
- Anime filmek és sorozatok
- További aktív témák...
- ASUS RTX 5070 12GB GDDR7 PRIME OC - Gari 2028.11.26. -ig - Eladó!
- Precision 5560 15.6" FHD+ IPS i7-11800H T1200 32GB 512GB NVMe ujjlolv IR kam gar
- Dell Latitude 9430 14" FHD+ IPS i7-1265U 32GB 512GB NVMe ujjlolv IR kam gar
- Latitude 7440 14" FHD+ IPS i7-1365U 16GB 512GB NVMe ujjlolv IR kam gar
- Precision 7560 15.6" FHD IPS i9-11950H RTX A3000 32GB 512GB NVMe IR kam gar
- ÁRGARANCIA!Épített KomPhone Ryzen 7 7800X3D 32/64GB RAM RTX 5090 32GB GAMER PC termékbeszámítással
- HIBÁTLAN iPhone 12 Pro 256GB Graphite - 1 ÉV GARANCIA - Kártyafüggetlen, MS3283
- Xiaomi Redmi Note 14 Pro / 8/256GB / Káértyafüggetlen / 12Hó Garancia
- SzoftverPremium.hu
- Apple iPhone 13Pro 256GB Kártyafüggetlen 1év Garanciával
Állásajánlatok
Cég: Laptopszaki Kft.
Város: Budapest
Cég: ATW Internet Kft.
Város: Budapest



