Új hozzászólás Aktív témák
-
floatr
veterán
A hírverésre gondolok. Amikor a java 8 kerül szóba, akkor általában a lambdát tolják előtérbe, pedig az csak ~3 sornyi rövidítés. Az ebből profitáló API-k, mint pl a stream, csak sokadlagos tényezők, pedig ennek több értelme van, mint egy anonim osztály shortcutnak.
Mindegy, nem akartam ebbe belefolyni, mert felesleges vita. Csak sokan teljesen becsavarodnak ettől a lambdás dologtól, mintha valami olyan történt volna, amitől más irányba kering a Hold.
-
Aethelstone
addikt
Ez okosnak tűnik, de pont ezért van egy strict elválasztása az abstract osztálynak és az interfésznek, hogy ne keveredjenek a dolgok. Persze, tudom, hogy csak lehetőség, de használni fogják és onnantól igazából senki sem fogja tudni, hogy mit is kell valójában használni
MI 10T Pro 8/256 , Arsenal FC - Go Gunnarz...
-
Karma
félisten
válasz Aethelstone #5252 üzenetére
Érdekes módon más környezetben (ld. C#) ez nem okoz problémát
“All nothings are not equal.”
-
Aethelstone
addikt
Igen, de ott jelen van ez a dolog. Java oldalon mindig is megvolt, hogy az interfész csak szignatúra, az abstract class meg default implementáció is. Hozzá kell szokni, hogy lehet ilyen is.
A "gond" ott van, hogy innentől fogva nem látom sok értelmét az abstract class-nak Vagy nem látom sok értelmét ennek az újításnak Szóval, nem rossz, de számomra nem túl Java kompatibilisMI 10T Pro 8/256 , Arsenal FC - Go Gunnarz...
-
Karma
félisten
válasz WonderCSabo #5255 üzenetére
Csak amit neten láttam. Például itt van egy magyarázat, benne a "Real examples" alatt hogy hogy néz ki egy Iterable<T>.foreach, amit így bármilyen adattípusra meg lehet hívni, és még működni fog.
Régi a cikk, úgyhogy nem biztos, hogy a véglegesben is így van. De az elv látszik.
C#-nál meg nézd meg a LINQ-t. Az egész erre az elvre épül
“All nothings are not equal.”
-
WonderCSabo
félisten
Most akartam kipróbálni, felraktam a JDK8-at. Viszont az Eclipse nem ajánlja fel az 1.8-as fordítást. Hogy lehet előhozni? Vagy akkor mégsincs a stabil verzióban? Én itt azt olvasom, hogy egy development patchet lehet felrakni a Keplerhez, vagy felrakni a dev Lunát, sehol se látok olyasmit, hogy a stabil Kepler támogatná.
-
xTc
aktív tag
válasz WonderCSabo #5257 üzenetére
Elvileg a Kepler SR2-ben, verziószám 4.3.2-ben már megvan a támogatása. Érdemes lenne megnézned, hogy melyik verziód van?
-
fatal`
titán
válasz WonderCSabo #5259 üzenetére
Version: Kepler Service Release 2
Build id: 20140224-0627Ez a legújabb stabil, de nekem sincs benne.
-
Soak
veterán
válasz WonderCSabo #5257 üzenetére
Nincs stabilban.
-
xTc
aktív tag
válasz WonderCSabo #5259 üzenetére
Itt találsz megoldást:
-
xTc
aktív tag
válasz WonderCSabo #5263 üzenetére
Nagyon szívesen! :-)
-
WonderCSabo
félisten
Sziasztok!
Van valami bevált pattern arra, hogy szimuláljuk azt, hogy a leszármazott osztályokban az ősben deklarált statikus változóból legyen mind egy-egy példány a gyerekekben?
Leírom mit szeretnék:
class Base {
static Object o = new Object();
}
class Derived1 extends Base {
}
class Derived2 extends Base {
}Teljesen helyesen ilyenkor csak egy Object példányosul, tehát a Derived1.o és a Derived2.o és a Base.o is ugyanarra az objektumra mutat. Azt szeretném elérni, hogy ezek mind más példányra mutassanak.
Azért lenne szükségem erre, mert Androidban adatbáziskezelő osztályaim vannak, amik nyitását/zárását static mezők felügyelik, és van leszármazási hierarchia az osztályok között. Mivel minden osztályból egy példány van (~singleton), ezért szükségem van, hogy minden osztályra külön "felügyelő" változó legyen, de nem akarok kódismétlést.
[ Szerkesztve ]
-
fatal`
titán
válasz WonderCSabo #5265 üzenetére
Lehet, hogy rosszul közelítem a dolgot, de mi lenne, ha a Base abstract lenne és lenne egy abstract getter függvénye ami visszaadja a jelenleg static objectedet? Így az ősosztályba írhatod a függvényt elkerülve a kódismétlést, az leszármazott osztályban meg megírod a gettert, így külön objektumaid lesznek.
-
WonderCSabo
félisten
Nem jó sajnos, mert statikus függvénnyel is érem el a statikus változót, így nem tudom felüldefiniálni a függvényeket.
Mutatom mi a konkrét scenario:
public class DatabaseManager extends OrmLiteSqliteOpenHelper {
private static final AtomicInteger sUsageCounter = new AtomicInteger(0);
private static DatabaseManager sInstance = null;
public static synchronized DatabaseManager getHelper(Context context) {
if (sInstance == null) {
sInstance = new DatabaseManager(context);
}
sUsageCounter.incrementAndGet();
return sInstance;
}
@Override
public void close() {
if (sUsageCounter.decrementAndGet() == 0) {
super.close();
sInstance = null;
}
}
}Na most ebből lett két külön osztály, és ahhoz jelenleg ezt a kódot mind le kell kopiznom.
-
M_AND_Ms
addikt
válasz WonderCSabo #5267 üzenetére
Ezt a nyitó-záró logikát tedd egy külön statikus függvénybe, bemenő paraméterként az ős db kezelővel, melynek konstruktora hívja meg a statikus nyitó-záró függvényt, önmagát átadva neki.
Ugyanígy járj el a close-zal is.
Természetesen a db kezelőid továbbra is singletonként példányosítsd!Aki tejszínhabot szeretne, az inkább verje ki a fejéből!
-
M_AND_Ms
addikt
válasz WonderCSabo #5269 üzenetére
Az is lehet, a felvetésedet nem értem teljesen. (mobilról vagyok, kódokat nem írnék most ;-) )
Most látom, hogy nem csak új példány esetén akarod az inkrementálót meghívni, hanem mindig. (Mondjuk ezt nem értem miért jó, de biztos van oka. Mi van, ha close nélkül valaki újra elkéri a példányt?). Így viszont hirtelen én sem látok más megoldást (ha mindegyik db kezelő leszármazott külön saját kezelővel akar rendelkezni)
Aki tejszínhabot szeretne, az inkább verje ki a fejéből!
-
WonderCSabo
félisten
válasz M_AND_Ms #5270 üzenetére
Némi magyarázat ehhez az egészhez.
-
floatr
veterán
válasz WonderCSabo #5267 üzenetére
Namost lehet h én értelmezem félre a kódot, de ha factory metóduson keresztül létrehozva az osztály egy singleton, akkor a példányváltozón kívül egyetlen további változónak sem kéne statikusnak lennie. Neme?
Vagy a példánnyal van a gondod? Mert arra olyan példákat láttam, hogy ahány osztály, annyi változó. Ha külön maganer van típusonként, akkor abban vannak a példányok tömbben, mapben miegymás
-
WonderCSabo
félisten
Azért kell usageCounternek is statikusnak lennie, mert a getHelper() többször is meg lehet hívva, ami statikus. Annyi a lényeg az egészben, hogy a getHelper() és a close() elvileg páronként vannak hívva, és ha a szám 0-ra esik akkor bezárja a db-t. Vagy mi volt a kérdésed?
-
chabeee
tag
Sziasztok,
Multithreaded Servert csináltam, és a Client felöl érkező üzenetet átszeretném küldeni egy másik osztálynak. Ezt hogyan csinálhatom?
-
PandaMonium
őstag
válasz chabeee #5274 üzenetére
Concurrency -ben nem nagyon vagyok otthon, de mivel más még nem válaszolt igyekszem segíteni, aztán majd jönnek a profik és megmondják, hogy kéne rendesen: Szerintem csinálj egy singletont ami a thread workereket tárolja és a singletonon keresztül letudod kérni az egyes workereket, a változóikat pedig egy egyszerű getter-el megszerzed.
What I cannot create, I do not understand
-
gygabor88
tag
-
axioma
veterán
válasz WonderCSabo #5273 üzenetére
En ugy ertem a feladatot, hogy az ososztaly tudja, milyen alosztalyai vannak, es a kod tobbszoros leirasa az egyetlen problemad. Akkor miert nem csinalod, hogy az ososztalyban egy map-be bedobod a class-hoz a neki rendelt felugyelot, es 1x irod meg a fuggvenyt ami a class-hoz visszakapott cuccost modositja?
(Bocs a pongyolasagert, meg en nem feltetlen tartanam ezt kovetendobbnek, mint a kulon letrehozast, meg lehetne persze tombbel es indexekkel, en csak a te felteteleidhez dobtam be egy szerintem megvalosithato es meg mindig nem tul ronda otletet.) -
axioma
veterán
válasz WonderCSabo #5278 üzenetére
Valoszinuleg a konkret alkalmazasban nem relevans, de en itt erosnek talalom ezt a tulaltalanositast. Nem csak azert, mert ugyis a kodot kell valtoztatni, ha valtozik hogy milyen adatbazisokhoz kapcsolodik, az egy release-ben fix lista - legalabbis gondolom. Igy en siman karbantartasi feladatnak tartanam, hogy ha valahogy beesik egy uj, akkor annak letrehozd a neki megfelelo hozzarendelest is a map-ben. Ezzel a megvalositassal nem a kozvetlen leszarmazasi szintre szoritkozik a kod, tehat ha valamiert ugyanazt a db-t kesobb ketfele alosztallyal kezeled akarmiert, akkor ha jol ertem ezzel a koddal vagy elszall - ugyanahhoz ket kulon kulcs! -, vagy sokkal nagyobb karbantartasi igeny lesz az, hogy azoknal mindig visszakasztolva hivd a getHelper-t, plane ha nem csak egy helyen kell.
Masik: ket map ugyanazzal a kulccsal, ez tuti kell? Ha jol ertem, akkor egy alosztalyhoz max. egy ADBM-ed van, tehat neki - nem statikus - member valtozojakent boven eleg lenne a szamlalot tarolni.
Harmadreszt ha ez csak egy kezelo (szinte semmi mem.igeny, es a kapcsolatot ugyis a letezesetol fgtl. zarod - elorebocsatom, az adatbazisos reszhez nem ertek), akkor mi ertelme van a peldanyt kidobni majd kesobb ujra letrehozni?De lehet, hogy valamit nem latok benne ami plusz kell az adatbazisos parhuzamos kezeles vagy ilyenek miatt.
-
WonderCSabo
félisten
Ez egy proof of concept kód volt.
Egyelőre egy db - egy kezelőosztály, de ez valóban problémát okozna itt.
A két mapet csak belehánytam, a singleton miatt valóban lehetne a counter a példányban.
A példányt ki kell dobni, ennél a cuccnál legalábbis ha már bezártál egy példányt, újból nem nyithatod meg. -
chabeee
tag
válasz PandaMonium #5275 üzenetére
Köszi szépen, hasonló módon oldottam meg
(#5276) gygabor88
nem, a klienstől érkező üzenetet a servernek átküldi, az teljesen okey volt, a servertől való küldés érdekelt, de már kialakítottam valahogy, azért köszi.Most egy másik probléma merült fel az eclipseszel, méghozzá ezt írja:
Error: Could not find or load main class hu.rf.server.Serverstackoverflow-n kb annyit írtak róla hogy rossz a classpath beállítás, de az elvileg tuti jó. Valaki találkozott ilyesmivel?
[ Szerkesztve ]
-
floatr
veterán
válasz WonderCSabo #5273 üzenetére
Értem én, hogy hogyan működne, csak azt nem, hogy miért. Mert tegyük fel, hogy a sUsageCounter is adattag, és nem statikus. Akkor a getHelper-nek adattagként kéne babrálnia, vagy hívhatna egy open() metódust is, ami ezt az értéket kezeli. Sakko szimmetrikus is a dolog, pláne ha van valami szemaforos cucc is a két metódus körül.
Nem szabad halmozni a statikus dolgokat singleton esetében. Sőt, amióta springgel írom a hello world-öt is, azóta nem is nagyon használok igazi singletont sem. Itt persze más a dolog, de sztem hagyni kéne, hogy a singleton a nyitáskor is gondoskodjon magáról, ne csak a záráskor. -
sudosu
csendes tag
válasz MasterMark #5050 üzenetére
Egy kicsit benéztem a sorszámokat szóval írtam egy választ de úgy látom utólag már tárgytalan, bocsi
[ Szerkesztve ]
-
-v-
addikt
válasz WonderCSabo #5267 üzenetére
Miért erőlteted ezt a staticot, én se értem ... amúgy ezek a helper classok mennyire bad practice... előjöttek a rossz emlékek Miért használsz prefixet a fieldeknél? Az se túl jó gyakorlat manapság
(#5278) WonderCSabo: hát, a kód duplikáció az sose jó
Amúgy: java-ban nincs függvény Metódus van. De szerintem az adattag is c++ terminológia.
edit: ja most látom, hogy androidról beszélünk
[ Szerkesztve ]
-
Osiris
őstag
Java applet-et szeretnék szignózni. Azt tudom, hogy hogy kell. Arra lennék kíváncsi, hogy ha azt akarom, hogy az aláírás hiteles legyen, pl a netlock.hu-n szeretnék venni hozzá valamilyen megbízható tanúsítványt, akkor milyen típusút kellene vennem?
Azt tudom, hogy egy HTTP szervernél egy szerver ssl tanusítványt kell generálni, majd az aláírási kérelmet (CSR-t), fel kell tölteni a netlock-hoz és ők aláírják. Azt viszont nem értem, hogy ugyanez, hogy menne az appleteknél?Elvileg itt az jönne a fent linkelt leírás szerint, hogy:
1, "Digitális személyazonosságunk elkészítésének ezköze a keytool nevű alkalmazás. Első feladat, egy kulcspár generálása: " - eddig oké (gondolom az applet-et üzemeltető szervezet nevére szóló kulcs jó lesz).2, "Ha a kulcspár elkészült, a következő feladat, hogy a nyilvános kulcsunkhoz egy tanúsítvány készítsünk vagy készíttessünk. Ha egy hitelesítő hatóság (CA - Certification Authority) szolgaltatását kívánjuk igénybe venni, egy tanúsítvány hitelesítési kérelmet (CSR - Certifacte Signing Request) kell elküldenünk a kiválasztott CA-nak. Ezt is a keytool segítségével készíthetjük el"
...és itt akadtam el. A netlock az alábbi tanúsítványtípusokat tudja hitelesíteni:
- SSL tanúsítvány - Titkosító, hitelesítő (HTTP szerverekhez)
- Aláíró tanúsítvány - Ez lehet személyes, munkatársi, szervezetiEz alapján azt gondolom, hogy szervezeti kell. OK!
És akkor ezt a tanúsítványt én használhatom több applet aláírására (a fent linket doksi szerint)..
Akkor lehet, h meg is válaszoltam a kérédésem. Jól gondolom?
-
-v-
addikt
Sorry androidot nem láttam, ahhoz nem (sem ) értek
(#5288) floatr: hát részletkérdés az igaz, de szerintem rontja eléggé az olvashatóságot. És ha pár ilyen részletkérdés mind "rosszul" van és összeadódnak, akkor máris bajban lehet az ember ... vagy legalábbis nekem ez a tapasztalatom, de lehet csak én szopom be mindig az ótvar legacy code baseket
[ Szerkesztve ]
-
Osiris
őstag
Már mindent tisztának gondoltam erre a NetLock supporttól kapok egy ilyen választ:
A Java kódaláíráshoz jelenleg nem adható ki megfelelő tanúsítvány a Java komplikált tanúsítványkezelése és részben magyar törvényi keretek hiányosságai miatt.De akkor most mi van ha a fentiek szerint végigcsinálom a folyamatot, hitelesíttetem velük az aláíró tanúsítványt, majd azzal aláírogatom a java appleteket? Mitől nem fog működni?
-
Lortech
addikt
Valószínűleg nem véletlenül írják. Látni kéne, milyen certet tudnak adni, de könnyen lehet, hogy a java default truststore-ja nem hitelesítené a netlock által kiadott tanúsítvánnyal aláírt kódot. Így sokra nem mész vele, ha ezt használod aláírásra, java verziótól függően vagy security warningot adna vagy meg is tagadná a program futtatását (pl 1.7_45-től).
A legutóbbi, biztonsági modellt érintő változtatásokkal még rúgtak egyet ebbe az amúgy is döglődő RIA platformba. Persze dicsérendő, hogy a biztonságra ráfeküdtek, csak már sokkal korábban kellett volna, kevesebb lett volna a fejlesztőknek okozott kár..Thank you to god for making me an atheist
-
floatr
veterán
Szerintem kicsit túlpörgöd ezt a névkonvenciós dolgot. Inkább a singleton-static logikai bukfenc az, amivel ő maga is lukra futott. Nem hiába beszélnek annyit róla matyóhímző tervezési mintás szakkörökön, hogy vagy egyik, vagy másik, mert könnyen benézi az ember
[ Szerkesztve ]
-
WonderCSabo
félisten
Igen, Androidról beszélünk, nem véletlenül kell ez a szívás.
Amúgy: java-ban nincs függvény Metódus van. De szerintem az adattag is c++ terminológia.
Erre inkább nem válaszolnék.
floatr: Igazából én mutatott példakódból indultam ki. Igen, valóban lehetne simán a példányban is. Szerintem itt a kódban az egyszerűség kedvéért osztályváltozó a cucc, így rövidebben le lehet írni.
A prefixes téma előjött, szerintem is hülyeség, erről már beszéltünk is hunfatal kollégával, de Android kódban illik.
(#5295) floatr: Ja én végeztem design pattern tárgyat, és elég sokat is olvasgattam ebben a témakörben, de igazából szerinte a singleton eléggé anti-pattern, kerülöm ahol lehet. Ezt a cuccot igazából nem gondoltam át, csak átvettem a példakódot.
Egyébként nem a static miatt van csak itt a lukra futás. Alapvetően a Singletonból nem is tudsz örökölni.
[ Szerkesztve ]
-
M_AND_Ms
addikt
válasz WonderCSabo #5296 üzenetére
" Alapvetően a Singletonból nem is tudsz örökölni."
Örökölni tudsz, csak a singletonosságát nem. Mondjuk érthető, hisz az osztályszintű, static dolog.
Aki tejszínhabot szeretne, az inkább verje ki a fejéből!
-
WonderCSabo
félisten
válasz M_AND_Ms #5297 üzenetére
A Singletonnak - ha normálisan akarja megírni az ember - privát konstruktora van, nem véletlenül. Én nem normálisan írtam meg. Singletonból örököl egy osztály, csak baj van belőle.
Egyébként a static metódusokat simán lehetne örökölni, túlterhelni subclassban, csak a Java nem támogatja ezt. Anno a híres "java sucks" cikkben (http://www.jwz.org/doc/java.html) ezt is felrótták Neki (about the language itself rész).
[ Szerkesztve ]
-
fatal`
titán
válasz WonderCSabo #5298 üzenetére
Én azt se értem, hogy normál (értsd nem inner class) osztálynak miért nem lehet static kulcsszót megadni, mint C#-ban. Helyette kell final, meg privát konstruktor.
Ú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: Ozeki Kft.
Város: Debrecen
Cég: Promenade Publishing House Kft.
Város: Budapest