- Sötét fantasy eposszal csábítja potenciális vásárlóit az AMD
- Döbbenetesen sok energia kell az érkező Nova Lake működéséhez?
- Nem akármilyen új GeForce jöhet idén
- Karnyújtásnyira került a százmilliomodik PlayStation 5 leszállítása
- A már megjelent gyorsítóin kapcsolt ki néhány részegységet a Tenstorrent
- Elképesztő lemaradásban van az aktuális Loongson CPU-család
- SSD kibeszélő
- Milyen Android TV boxot vegyek?
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- Épített vízhűtés (nem kompakt) topic
- Döbbenetesen sok energia kell az érkező Nova Lake működéséhez?
- AMD GPU-k jövője - amit tudni vélünk
- Nem akármilyen új GeForce jöhet idén
- Szünetmentes tápegységek (UPS)
- Milyen monitort 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
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- Synology NAS
- Százmilliárd dolláros AI-fegyverkezésbe kezdett az Amazon és a Google
- PlayStation 5
- Elképesztő lemaradásban van az aktuális Loongson CPU-család
- SSD kibeszélő
- Milyen Android TV boxot vegyek?
- Samsung Galaxy A54 - türelemjáték
- Milyen okostelefont vegyek?
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- Épített vízhűtés (nem kompakt) topic
- További aktív témák...
- ÚJ Gamer Ryzen 5 5600 / 16GB DDR4 / RTX 3060 12GB / 512GB SSD
- 6 hónap garancia - Samsung Galaxy A32 5G 4GB RAM / 128GB
- Apple Macbook Pro 14" - M4 Pro - 24GB/512GB - 68 Ciklus (MX2E3MG/A) Ezüst - MAGYAR - 2+ év garancia
- Latitude 7420 2-in-1 14" FHD IPS érintő i7-1185G7 32GB 512GB NVMe ujjolv IR kam gar
- SAMSUNG LS49AG950NPXEN 49" NEO Q-LED 5K GAMER 240HZ ! AKCIÓ
- Dell Latitude 5300 13,3" FHD IPS touch, i7 8665U, 8-16GB RAM, SSD, jó akku, számla, 6 hó gar
- ÁRGARANCIA!Épített KomPhone i5 12400F 16/32/64GB RAM RTX 3060 12GB GAMER PC termékbeszámítással
- Új Alienware 16X Aurora QHD+ 240Hz G-Sync Ultra9 275HX 24mag 32GB 1TB Nvidia RTX 5070 Win11 Garancia
- LG 27US550-W - 27" IPS / 3840x2160 4K / 60Hz 5ms / HDR10 / Forgatható / sRGB 99%
- Eladó Xiaomi Redmi 15 6/128GB fekete / 12 hó jótállás
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest



