- D1Rect: Nagy "hülyétkapokazapróktól" topik
- sziku69: Fűzzük össze a szavakat :)
- Luck Dragon: Asszociációs játék. :)
- vrob: Az IBM PC és a játékok a 80-as években
- Brogyi: CTEK akkumulátor töltő és másolatai
- Tomasz72: Ventilátor upgrade
- sziku69: Szólánc.
- MasterDeeJay: H110-es lapban 10.gen Comet Lake működhet?
- eBay-es kütyük kis pénzért
- Parci: Milyen mosógépet vegyek?
Ú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
Hirdetés
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- Formula-1
- Honor Magic7 Pro - kifinomult, költséges képalkotás
- Milyen billentyűzetet vegyek?
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Megjelent a Poco F7, eurós ára is van már
- Linux kezdőknek
- Milyen széket vegyek?
- Azonnali fáradt gőzös kérdések órája
- exHWSW - Értünk mindenhez IS
- További aktív témák...
- Easun iSolar SMW 11kW Twin Hibrid inverter // Dupla MPPT // BMS // WiFi
- GAMER PC : RYZEN 7 5700G/// 32 GB DDR4 /// RX 6700 XT 12 GB /// 512 GB NVME
- GAMER MSI LAPTOP : 15,6" 144 HZ /// i5 12450H /// 16GB DDR4/// RTX 4050 6GB/// 1TB NVME
- Manfrotto 055 magnézium fotó-videófej Q5 gyorskioldóval
- Sony ECM-W2BT
- LG 65C2 - 65" OLED evo - 4K 120Hz 1ms - NVIDIA G-Sync - FreeSync Premium - HDMI 2.1 - PS5 és Xbox!
- Bomba ár! Dell Latitude 5500 - i5-8GEN I 8GB I 256SSD I HDMI I 15,6" FHD I Cam I W11 I Garancia!
- NJOY Aster 3K 3000VA/2700W Rack Szünetmentes Táp
- 123 - Lenovo Legion Pro 5 (16ARX8) - AMD Ryzen 7 7745HX, RTX 4070 (48 hónap garancia!)
- Bomba ár! Dell Latitude 7320 - i5-11GEN I 8GB I 512SSD I HDMI I 13,3" FHD I Cam I W11 I Garancia!
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: Promenade Publishing House Kft.
Város: Budapest