Új hozzászólás Aktív témák
-
norbert1998
veterán
-
PumpkinSeed
addikt
Adott egy absztrakt osztály(Ital), adott egy interfész(Alkoholos). Van három osztály: Bor (extends Ital, implements Alkoholos), Gyumolcsle (extends Ital), FalraHanytBorso (implements Alkoholos).
A feladat az, hogy ezeket egy közös tárolóban (ArrayList)-ben kellene tárolni, aminek generikusként Ital-t adnék meg, de ha FalraHanytBorsot példányosítanak az gondolom nem fér bele. Hogyan kellene ezt megoldani? Azt gondolom úgy elfogadja ha nem adok meg neki generikust, és akkor elfogadja azt is, de nincs valami szebb megoldás?
[ Szerkesztve ]
"Akinek elég bátorsága és türelme van ahhoz, hogy egész életében a sötétségbe nézzen, elsőként fogja meglátni benne a fény felvillanását." - Kán
-
fatal`
titán
válasz PumpkinSeed #7352 üzenetére
Ezeket nem tudod rendesen közös tárolóban tárolni, mert nincs közös ősük (az objectet kivéve persze). A generikus nélküli használat ha jól tudom elég régen deprecated (talán warningot is dob rá a fordító), csak kompatibilitási okokból maradt a nyelvben.
-
gygabor88
tag
válasz PumpkinSeed #7352 üzenetére
Miért akarsz közös tárolóba tenni olyan elemeket, amiknek nincs használható közös őse?
Amúgy ha mindenképp erre kényszerítenek, akkor ArrayList<Object>-be pakolhatod, erre elvileg nem dob warningot sem, csak hát nem valami hasznos így, mert visszaolvasásnál castolni kell majd. -
PumpkinSeed
addikt
Eddig még nem dobott rá warningot, de nem tudok jobb megoldást. Ez van a feladatban.
(#7354) gygabor88
Warningot generikus nélkül se dob, de azért mert ez van feladatként meghatározva. Azért rákérdezek, hogy miért és hogyan.
"Akinek elég bátorsága és türelme van ahhoz, hogy egész életében a sötétségbe nézzen, elsőként fogja meglátni benne a fény felvillanását." - Kán
-
PumpkinSeed
addikt
Egy újabb problémám van, itt egy kód ami fájlból olvassa be ezt:
bor;cabernet_sauvignon;nagyon_finom;9.81%
gyumolcsle;narancs;savanyu;tesco_gazdasagos
borso;98%;nem_kostoltamA data[0] az konkrétan kiírja azt, hogy bor, már trim-el is próbáltam, hogy leszedje a whitespace-ket, és mégse lép bele egyszer se az if ágakba hanem mindig az else teljesül. Mit rontok el?
[ Szerkesztve ]
"Akinek elég bátorsága és türelme van ahhoz, hogy egész életében a sötétségbe nézzen, elsőként fogja meglátni benne a fény felvillanását." - Kán
-
Aethelstone
addikt
válasz PumpkinSeed #7356 üzenetére
data[] == "bor" nem jó. Helyette "bor".equals(data[0])
Java-ban a Stringeket equals-sal hasonlítunk össze, nem ==.
if("bor".equals(data[0]){
Bor b = new Bor(data[1],data[2],data[3]);
System.out.println("valami");
italok.add(b);
}
else if("gyumolcsle".equals(data[0])){
Gyumolcsle gy = new Gyumolcsle(data[1],data[2],data[3]);
italok.add(gy);
}
else if("borso".equals(data[0])){
FalraHanytBorso fhb = new FalraHanytBorso(data[1],data[2]);
italok.add(fhb);
}
else{
//System.out.println("Ilyen nincs.");
}Még valami.
Azért megy előre a konstans string, mert ha a data[0] esetleg null, akkor szétszáll a pichába az egész.[ Szerkesztve ]
MI 10T Pro 8/256 , Arsenal FC - Go Gunnarz...
-
PumpkinSeed
addikt
válasz Aethelstone #7357 üzenetére
El is felejtettem Köszönöm az útmutatást.
"Akinek elég bátorsága és türelme van ahhoz, hogy egész életében a sötétségbe nézzen, elsőként fogja meglátni benne a fény felvillanását." - Kán
-
axioma
veterán
válasz PumpkinSeed #7358 üzenetére
Vagy ezt is meguszod, ha string-re switch-elsz. Orvendetes, hogy bekerult, attekinthetobb a kod vele.
-
M_AND_Ms
addikt
válasz Aethelstone #7357 üzenetére
"Java-ban a Stringeket equals-sal hasonlítunk össze, nem ==."
Ez kicsit sántít ill. félrevezető.
Java-ban a == -nal nem a két objektumot hasonlítjuk össze, hanem a két referenciát. Vagyis akkor kapunk igazat ha mindkettő ugyanarra az objektumpéldányra mutat.
Az equals-nél pedig meghívjuk az adott objektumpéldány equals függvényét, ami az objektumra jellemző összehasonlítást végzi és megmondja, hogy a paraméterként megadott másik objektumpéldányt azonosnak tekintjük-e, vagy sem. Ebben az equals-ben lehet megírni az objektumra jellemző logikát, ami az azonosságot kimondja. String-nél természetesen ezt már megírták és akkor mondja azonosnak, ha pontosan ugyanaz a a karakterliterál van mindkét String példányban.
De pl. írhatok az Alma osztályomba egy saját equals függvényt, ami az én logikám szerint akkor ad igazat ha a méret, a szín és a súly tulajdonságai megegyeznek a két összehasonlítandó Alma osztályból létrehozott példánynálTehát, NEM CSAK Stringnél kell az equals a == helyett az azonosság eldöntésére, hanem minden osztály példányánál.
[ Szerkesztve ]
Aki tejszínhabot szeretne, az inkább verje ki a fejéből!
-
Aethelstone
addikt
válasz M_AND_Ms #7361 üzenetére
Tehát, NEM CSAK Stringnél kell az equals a == helyett az azonosság eldöntésére, hanem minden osztály példányánál.
Nos, ez nem ilyen egyértelmű. Az autoboxingos osztályoknál pl. szükségtelen az equals, mivel gyárilag meg van írva, hogy pl. a Long i-nél az i.longValue()-t hasonlítja a megadott longhoz.....
Persze, saját osztályoknál nyilván az equals a célszerű és a követendő, de itt konkrétan a String-ről volt szó és itt mindenképpen az equals kell.
Pongyolán fogalmaztam, ez tény
[ Szerkesztve ]
MI 10T Pro 8/256 , Arsenal FC - Go Gunnarz...
-
floatr
veterán
válasz Aethelstone #7357 üzenetére
Vagy építene egy kontextust, benne map-be rendezett handlerekkel, sakko nincsen ilyen melléfogás
-
M_AND_Ms
addikt
válasz Aethelstone #7363 üzenetére
"Az autoboxingos osztályoknál pl. szükségtelen az equals, mivel gyárilag meg van írva, hogy pl. a Long i-nél az i.longValue()-t hasonlítja a megadott longhoz....."
Ezt nem értem.Ha két Long-ot == jellel akarsz összehasonlítani, akkor megint csak a két referenciát vizsgálod. Amúgy persze, hogy a Long equals függvénye úgy gondolkodik, hogy a longValue()-t veti össze a a saját value mezőjével De ez nem az autoboxingból jön, hanem ez is ugyanaz a logika, mint amit már leírtam (ahogy a String-nél meg a saját value[]-ból dolgozik)."Persze, saját osztályoknál nyilván az equals a célszerű és a követendő, de itt konkrétan a String-ről volt szó és itt mindenképpen az equals kell."
Mindig equals kell, fogadd el!(#7362) Ursache
Mivel osztályokról beszélünk, ezért nem kell egyértelműsíteni, hogy csak a nem primitíveknél van így. Az osztály eleve NEM primitív.[ Szerkesztve ]
Aki tejszínhabot szeretne, az inkább verje ki a fejéből!
-
floatr
veterán
válasz Aethelstone #7365 üzenetére
Basszus ilyen nyakatekert példákon veszem észre, hogy mennyire sokat kell ahhoz tanulni, hogy készség szintjén tudja ezeket a dolgokat valaki. Ha jobban belegondolok a kollégám is hónapok óta képzi a juniorokat, és most értek el odáig, hogy servlet...
-
veterán
-
M_AND_Ms
addikt
válasz Aethelstone #7368 üzenetére
Azért, hogy okosodjunk, mutass egy példát - de most komolyan, hisz ez itt ontopic
Aki tejszínhabot szeretne, az inkább verje ki a fejéből!
-
Aethelstone
addikt
válasz M_AND_Ms #7370 üzenetére
Előbb talán elolvasnád amit írtam vagy a kolléga írt. A kolléga konstans stringeket hasonlított egy string tömb elemeihez. "bor" == data[0]. ERRE írtam, hogy itt az equals kell és írtam, hogy pl. egy Long i = 1 (i == 1)-nél nem kell i.equals(1), hanem == is megteszi. Pont. Semmi többet nem írtam, Te meg elővetted az okoskodást és kurvára szétoffoltad a témát. Szerintem. Tehát okosodás első lépcsőjeként leírt szöveg értelmezése. Szó nem volt saját osztályról, equals felüldefiniálásról vagy bármi egyéb ilyesmiről.
És most tényleg befejeztem.
MI 10T Pro 8/256 , Arsenal FC - Go Gunnarz...
-
floatr
veterán
válasz Oppenheimer #7369 üzenetére
Nem tudom, de szerintem mindenen végigmennek sorra, amitől érthetővé válik az enterspájz. Azzal a juniorral nekem kifejezetten jó tapasztalataim vannak, aki a csapatomba került.
-
M_AND_Ms
addikt
válasz Aethelstone #7372 üzenetére
Köszönöm példát, bár ott az egyik egy primitív, amelynél ugye alapból nincs értelme semmilyen függvény meghívásáról beszélni. A példádban amúgy outboxing történik, vagyis a Longból veszi ki automatikusan a longot és így már primitívek között persze, hogy csak a == működik.
Más. Látom csak nekiálltál alpári stílusban írni. Jelzem amiről beszélünk az nem offtopic, még akkor sem, ha te mindenképp azt hajtogatod, hogy én "kurvára szétoffolom". Sajnálom, ha egy szakmai topikban nem vagy képes megmaradni a szakmaiságon belül, sőt kifejezetten zavar téged.
Aki tejszínhabot szeretne, az inkább verje ki a fejéből!
-
nagyúr
Es ez reszben azert egy hiba a technologia reszerol.
Egyebkent en se hasznaltam meg servletet soha eletemben, bar papiron programoztam mar javat Mondjuk a kovetkezo dolog, amit csinalni fogok, az pont egy szep nagy j2ee cucc lebontasa darabokra.
[ Szerkesztve ]
while (!sleep) sheep++;
-
veterán
Mivel nincs scala topik, itt teszem fel a kérdést: mi a legjobb oktatóanyag a neten?
https://play.google.com/store/apps/details?id=com.lovemap.lovemapandroid
-
nagyúr
válasz Oppenheimer #7378 üzenetére
Biztos, hogy azt akarod? Egyébként szívesen kölcsönadom az Odersky-fele könyvet...
[ Szerkesztve ]
while (!sleep) sheep++;
-
veterán
-
nagyúr
válasz Oppenheimer #7382 üzenetére
Nézd meg, hogy a nagy rendszereket gyártó cégek, akik Scalaztak, hogy állnak vissza Javára vagy valami másra. A Scala problémája az, hogy őrült bonyolult lett a nyelv. Fun megtanulni, es amikor használod, akkor nagyon produktívnak érzed magad. A probléma ott jön, amikor pár főnél nagyobb csapat kezd el dolgozni, és mindenkinek más rész tetszik a Scalabol.
Nekem bejott a Scala, de amikor elkezdtem nézegetni a Scalaz-t meg társait, akkor ezt láttam. Aztán miután hagytam, kezdtek jönni az iparbol is a hírek, hasonló tapasztalatokról. (sok publikus hír is van, de privátban nem publikusbol is van pár sztorim)A Scala a JVM C++-a. Read this.
Egyébként a Clj számomra nagyobb revelacio volt, de persze ízlés dolga..
[ Szerkesztve ]
while (!sleep) sheep++;
-
Gyuri16
senior tag
scala engem is erdekel, en ezt akarom atnezni bevezetokent: [link] aztan ha meg nem unom akkor ezt: [link]. leginkabb csak jatek szinten erdekel, reg nem tanultam valamit just for fun..
munkaban javat hasznalunk, es nem ritkan szeretnek valami kifejezobb nyelvvel dolgozni. remelem belathato idon belul hasznalhatunk java8-at, kivancsi vagyok lambdak es collection streamek mennyire lesznek hasznalhatoak.
Nem vagyok egoista, csak uborkagyalu!
-
Aethelstone
addikt
A fő gond ezzel a Scalaval az szerintem, hogy a programozás oktatás még nem készült fel erre a nyelvre. Ahogy a linkelt doksi is tartalmazza, nem találnak megfelelő fejlesztőket.
Because it's effectively impossible to hire people with prior Scala
experience (of the hundreds of people we've interviewed perhaps three had Scala
experience, of those three we hired one), this matters much more than it might
otherwise. If we take even the strongest of JVM engineers and rush them into
writing Scala, we increase our maintenance burden with their funky code; if we
invest heavily in teaching new hires Scala they won't be writing production code
for a while, increasing our time-to-market. Contrast this with the default for
the JVM ecosystem: if new hires write Java, they're productive as soon as we can
get them a keyboard.És ez szerintem középtávon nem is fog változni. Ugyanaz a helyzet kb. mint annó, amikor a sok c,pascal,dbase/clipper fejlesztőből akartak OO feljesztőket találni, de egészen egyszerűen egy nemzedéknek "ki kellett halnia" és fel kellett nőnie egy újnak, aki már ezt tanulta célirányosan.
Szerintem...
MI 10T Pro 8/256 , Arsenal FC - Go Gunnarz...
-
Gyuri16
senior tag
válasz Aethelstone #7386 üzenetére
hat akkor nevetni fogsz: nalunk a kod legnagyobb resze meg 5-os es egyelore nem lehet updatelni. szerencsere utobbi evben en nagyreszt egy uj projekten dolgozok amit 8-assal kezdtunk, de aztan vissza kellett lepni 7-esre (mert JET nem tamogatja meg a 8-ast)
Nem vagyok egoista, csak uborkagyalu!
-
floatr
veterán
Elég gáz, hogy ez van:
new Long(1) == new Long(1); // false
new Long(1) == 1; // true
new Long(1).equals(new Long(1)); truevérgagyi
Akkor már oldják meg az operátor overloadingot, mert még az is jobb lenne.A servlet meg nyilván manapság nem cél, hanem az érthetőség miatt egy kis kitérő. Senki nem fog ma már servletet gyártani. A mostani projektben is amikor egy 10 évvel ezelőtti servletet akart valaki portolni, inkább REST WS-t ajánlottam, mert a framework miatt csak szopás lenne vele.
(#7379) jetarko semmi gond ezzel. Socket/RMI: hagyjuk; szálkezelés: fontos
De az alapok inkább fontosak, meg hogy mennyire mész utána egy problémának, ha belefutsz. Van olyan, aki csak ül és vár... -
veterán
A productivity és a több paradigma miatt akarom megtanulni. Olvastam ellenvéleményeket, pont azokat a hátrányokat írták, amit te. Igaz olyat nem hallottam, hogy scalaról visszamentek javara, viszont csomó beszámolót olvastam a neten, hogy miért választották a scalat a következő projektünk nyelvének. [link] [link]
https://play.google.com/store/apps/details?id=com.lovemap.lovemapandroid
-
nagyúr
válasz Oppenheimer #7390 üzenetére
Teljesen irreleváns, hogy a következő projekt nyelve mi. Olyanokat keress, akik már csináltak vele nagyobb projektet. Szerintem. A többféle paradigma megtanulasara nem jo, mert mindenből van benne egy kicsi. Funkcprogra jobb a Clojure (vagy racket vagy akarmi) meg a Haskell.
Tényleg nem muszáj nekem elhinni, de hidd el :d
while (!sleep) sheep++;
-
veterán
-
Gyuri16
senior tag
ha mar feljott a tema Clojure elkezdesehez tudsz ajanlani jo online anyagot? egy ideje rajta van a listamon, de csak annyit tudok rola, hogy sok irritalo buta zarojel
esetleg ha hasznaltad munkaban is erdekelne mire (ha publikus), ill. miert pont erre esett a valasztas.Nem vagyok egoista, csak uborkagyalu!
-
nagyúr
válasz Gyuri16 #7393 üzenetére
Joy of Clojure cimu konyv. Online nem tudom hirtelen, keress ra.
Zarojelek temaja: ezt en se hittem el eloszor (ezert se foglalkoztam Lisppel sokaig), de az zarojeleket egy ido utan nem latod. Marmint persze latod, de megszokja a szem, csoppet sem zavaro -- es a zarojelezes teszi lehetove a homoiconicity-t, ami kb. semelyik mas nyelvben nem mukodik. Igy sajat nyelvi konstrukciokat is nagyon egyszeruen definialhatsz -- pl. Java-ban nem volt foreach egesz odaig, amig a nyelvnek nem lett resze, Clojure-ben siman csinalhatsz magadnak, ha epp az hianyzik.
En mostanaban mindefelere ezt probalom hasznalni. A hatranya az, hogy nincs statikus tipusellenorzes. A legfobb elonye a konkurens programozas tamogatasa, ami szerintem jobb, mint barmelyik mas nyelvben. A clojure.async library (library, nem nyelvi elem vagy framework!) egy mestermu, ezenkivul az alapveto konkurencia-megoldas az STM (software transactional memory).
[ Szerkesztve ]
while (!sleep) sheep++;
-
nagyúr
válasz WonderCSabo #7396 üzenetére
Jaja, cache optimizacio. 128-al mar nem menne, asszem
while (!sleep) sheep++;
-
Gyuri16
senior tag
válasz WonderCSabo #7396 üzenetére
az autoboxing soran meghivott Integer.valueOf cacheeli a kis szamokat, ezert ugyanaz az objektum lesz mind a ketto. Ugyanaz nagy szammal nem fog mukodni.
masik hasonlo:
String a = "alma";
String b = "alma";
System.out.println(a == b); //trueez is egy optimalizacio eredmenye
emvy: a felso hatar allithato: -XX:AutoBoxCacheMax
[ Szerkesztve ]
Nem vagyok egoista, csak uborkagyalu!
-
floatr
veterán
válasz WonderCSabo #7396 üzenetére
Új hozzászólás Aktív témák
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- Crypto Trade
- Az Apple megszerezné a klubvilágbajnokság közvetítési jogait
- Lakáshitel, lakásvásárlás
- Az iPadOS-re írt appokra is díjat vet ki az Apple
- Amlogic S905, S912 processzoros készülékek
- Path of Exile (ARPG)
- Telekom otthoni szolgáltatások (TV, internet, telefon)
- Építő/felújító topik
- sziku69: Szólánc.
- Luck Dragon: Asszociációs játék. :)
- További aktív témák...
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: Ozeki Kft.
Város: Debrecen