Genericka metóda – Java – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Genericka metóda – Java – Fórum – Programujte.comGenericka metóda – Java – Fórum – Programujte.com

 

java
~ Anonymní uživatel
4 příspěvky
6. 3. 2016   #1
-
0
-

Je nejaký rozdiel medzy:

public static boolean isAreaEqual(GeometricObject obj1, GeometricObject obj2)
{
     return obj1.getArea() == obj2.getArea();
}

a:

public static <E extends GeometricObject> boolean isAreaEqual(E obj1, E obj2)
{
     return obj1.getArea() == obj2.getArea();
}

?

Nahlásit jako SPAM
IP: 213.151.238.–
Matrix17
~ Anonymní uživatel
300 příspěvků
6. 3. 2016   #2
-
0
-

Podle mého názoru mezi nimi rozdíl není. Jen si z generické metody udělal specializovanou ale fungovat by měly obě stejně.

Nahlásit jako SPAM
IP: 213.226.237.–
java
~ Anonymní uživatel
4 příspěvky
6. 3. 2016   #3
-
0
-

#2 Matrix17
zaujímal by ma dôvod na existeciu takej konštukcie "E extends Niečo"  načo sa to vlastne používa?

tá prvá metóda mi príde jednoduchšia

Nahlásit jako SPAM
IP: 213.151.238.–
Kit+15
Guru
6. 3. 2016   #4
-
0
-

#3 java
Ještě by byla jednodušší, kdyby nebyla static.

Nahlásit jako SPAM
IP: 194.228.13.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
java
~ Anonymní uživatel
4 příspěvky
6. 3. 2016   #5
-
0
-

#4 Kit
takže to nemá serózne viužitie?

Nahlásit jako SPAM
IP: 213.151.238.–
Kit+15
Guru
6. 3. 2016   #6
-
0
-
Nahlásit jako SPAM
IP: 194.228.13.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Petr
~ Anonymní uživatel
746 příspěvků
7. 3. 2016   #7
-
0
-

#5 java
- vyuziti samozrejme takova konstrukce ma, napr. pokud budou existovat tridy trojuhelnik a obdelnik, ktere budou dedit z tridy GeometricObject  pak tato metoda bude fungovat i pro ne

- takovato metoda nedava moc smysl ve statickem kontextu, ocekaval bych ji spise primo na tride GeometricObject, s tim ze by pak mela jeden parametr (referenci na jiny GeometricObject) a porovnaval by jsi to s objektem nad kterym to zavolas, v takovem pripade by ta genericka cast byla i zbytecna, protoze veskere tridy, ktere pak z GeometricObject podedi budou tuto metodu mit

- equals jak ti napsal Kit neprepisuj, z toho kodu co jsi napsal to vypada ze porovnavas obsahy nejakych geometrickych objektu, kdezto metoda equals by mela zjistit jestli jsou objekty stejne, jinymi slovy muzes mit trojuhelnik a obdelnik se stejnym obsahem ale objekty jako takove stejne rozhodne nejsou (lisi se v jinych atributech)

- return obj1.getArea() == obj2.getArea(); - nevim jaky datovy typ vraci getArea(), ale pokud je to cokoliv jineho nez primitivni datovy typ (tedy int, char apod.), tak to nebude fungovat spatne, protoze operator == nad objekty neporovnava obsah objektu ale reference na objekt, tedy zjistuje jestli je to ten samy objekt v pameti, coz nejspise neni to co chces v tomto pripade. Pokud getArea() vraci objekt, pouzij metodu equals.

Nahlásit jako SPAM
IP: 83.240.112.–
Petr
~ Anonymní uživatel
746 příspěvků
7. 3. 2016   #8
-
+1
-
Zajímavé

Kdyz na to ted znovu koukam tak ty vlastne nevracis nic krome booleanu, takze ta konstrukce je tam v tomto pripade nadbytecna, dedicnost jako takova ti uz veskerou funkcionalitu zajisti. Pokud bys vracel misto booleanu E tak by to nejaky smysl melo.

Nahlásit jako SPAM
IP: 83.240.112.–
Kit+15
Guru
16. 3. 2016   #9
-
0
-

#7 Petr
Na shodnost objektů nepotřebuješ metodu equals(), na to ti stačí operátor "==".

Nahlásit jako SPAM
IP: 194.228.68.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
sleepy
~ Anonymní uživatel
422 příspěvků
21. 3. 2016   #10
-
0
-

Je tam rozdiel v tom ze v jednom pripade ti to padne pri kompilacii ak sa pokusis porovnat stvorec s trojuholnikom (samozrejme predpoklad je ze oba dedia s GeometricObject). V tom druhom nie. Cize ma to vyuzitie, ak chces mat takyto compile time check.

Nahlásit jako SPAM
IP: 90.64.93.–
sleepy
~ Anonymní uživatel
422 příspěvků
21. 3. 2016   #11
-
0
-

#10 sleepy
swapni 1. a 2. v mojom comente a bude sa to zhodovat s tvojim kodom.

Nahlásit jako SPAM
IP: 90.64.93.–
Kit+15
Guru
21. 3. 2016   #12
-
0
-

#10 sleepy
Nepadne to ani při kompilaci. Stačí mít správně otypované formální parametry metody.

Nahlásit jako SPAM
IP: 194.228.68.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Matrix17
~ Anonymní uživatel
300 příspěvků
22. 3. 2016   #13
-
0
-

#9 Kit

Použít rovnost na shodnost objektů lze jen v případě, když tě vůbec nezajímá jejich obsah. Ale pokud chceš opravdu vědět zda dvě instance třídy jsou shodné a tím shodné myslím, uchovávají stejná data, tak == použít jednoduše nemůžeš. Viz. v javě porovnání přes rovnost na stringu a to samé v C#.

Plus equals musí splňovat několik podmínek aby byla správně napsaná a fungovala.

Nahlásit jako SPAM
IP: 176.74.134.–
Kit+15
Guru
22. 3. 2016   #14
-
0
-

#13 Matrix17
Já to vím, zkus si přečíst celou konverzaci.

Nahlásit jako SPAM
IP: 194.228.68.–
Komentáře označují místa, kde programátor udělal chybu nebo něco nedodělal.
Matrix17
~ Anonymní uživatel
300 příspěvků
24. 3. 2016   #15
-
0
-

#14 Kit
Aha už koukám, sem se v tom nějak ztratil. Moje chyba. :) Nicméně je problém asi už vyřešený.

Nahlásit jako SPAM
IP: 176.74.134.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 2 hosté

Podobná vlákna

Genericka metoda — založil jirka

Genericka trida s omezenim — založil qwertys

Metoda const — založil kas

EF 5.0 Metoda LOAD vs. WHERE — založil VladislavK

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý