- One otthoni szolgáltatások (TV, internet, telefon)
- Videó stream letöltése
- Mikrotik routerek
- Musk, X, a deepfake-törvény és a szólásszabadság
- Zyxel NAS326
- Világméretű botrány, leállás: minden megakadt, bocsánatot kért a CrowdStrike
- Hálózati / IP kamera
- Otthoni hálózat és internet megosztás
- Musk szerint bajban van a Tesla humanoid robotja
- SUSE Linux
Új hozzászólás Aktív témák
-
loszerafin
senior tag
válasz
loszerafin #1250 üzenetére
Help->Check for Updates->Install JIndent
-
loszerafin
senior tag
válasz
loszerafin #1239 üzenetére
Közben találtam pár okot, amiért egyébként se működne a dolog:
Tomcat 5.5 nem kompatibilis java ee 5-tel, szóval 1.4-gyel kellene próbálnom vagy tomcat 6-tal.Feltettem Windowsra a Tomcat5.5-öt, hátha könnyebb lesz.
A NetBEans 6-ban meg felvettem szervernek a Tomcat-et, ez látszólag meg is történt,
de mikor elkezdek egy Enterprise projectet, nem tudom szervernek kiválasztani a Tomcat5.5-öt, csak a glassfish-t. Pedig ha "Add"-dal próbálok hozzáadni, látszik, hogy a windowsos Tomcat fel van véve a szerverek közé.A Tomcat bin-jébe belemásoltam a *.bat állományokat, úgyhogy ez nem lehet a probléma, meg működik is a tomcat, kipróbáltam. Igaz, áttettem 8180-as portra, hogy ne zavarja a GlassFish-t.
-
Muton
addikt
válasz
loszerafin #1240 üzenetére
telepítve van az 1.6-os java, van is jar.exe-m (c:\pro..\java\jdk1.6.0_05\bin. jar.exe), csak nem használja
hol lehet a beállítani a path-t? -
Muton
addikt
válasz
loszerafin #1237 üzenetére
ez jó
köszi!
#1236-ra esetleg? -
VinoRosso
veterán
válasz
loszerafin #1220 üzenetére
hmm hát régen tudtam makaózni, de nekem már újra megtanulni a játékot és leprogramozni túl bonyis lenne. De van olyan atarsolyomban amit tok, és szerintem még nem csinálták meg, mert kevesen ismerik. Azért kösz a tippet.
-
VinoRosso
veterán
válasz
loszerafin #1217 üzenetére
na ezek már jók lesznek. Kár hogy az első postba lévő linkekeket nem lehet elérni
Mind1 kösz a segítséget, ha majd a négyszögletű kerek erdő felé járok meghálálom!
-
VinoRosso
veterán
válasz
loszerafin #1215 üzenetére
bakker nem én modtam hanem a tanár
-
VinoRosso
veterán
válasz
loszerafin #1213 üzenetére
egyetértek veled, de gondoltam igy jobb, mint tapasztalat nélkül belevágni a keresésbe. Biztos nem 1 oolyan ember van, aki valahogy megtanulta, és ennek egy része talán ismer valami könyvet, amit tud ajánlani. Pl Javaból én is tudnék ajánlani bevezető könyvet, amiből jól meg lehet tanulni. Jah valami kártyajáték lesz amugy a dologból, mert többre nem fogja futni az időmből. Csak valami olyat kéne kitalálni, amit még nem csináltak meg.
-
VinoRosso
veterán
válasz
loszerafin #1211 üzenetére
semmi baj nincs ezzel, ha gugliba akarok keresni akkor neki jajjgatok. Nekem olyasvalakinek a tanácsa kéna, aki vágja az ME-t és tisztában va vele milyen tankönyvek vannak( ha vannak egyetalán ), és hogy melyiket érdemes kézbe venni. De azért köszi, már ez is több annál amire az órán jutottam.
mod: Ja és azt még meg kell emlitenem hogy MIDP 1.0 és CLDC 1.0-ás apival toljuk, szal ha lehet akkor valami ősirégi forrás leggyen, ahogy látom itt MIDP 2.0 van, az meg nem jó mert abba már van ey csomó újítás( pl MIDP 1.0 -ba nics lebegőpontos tipus mások a memóriakorlátok stb.. )
lehet még meg éne kérdeznem Mikkamakkát vagy Dömdödömöt
-
Dare2Live
félisten
válasz
loszerafin #1201 üzenetére
Tudnál adni pár linket, hogy te mit/miket ajánlasz?
btw azthiszem válaszoltama kérdésére a java + programnévvel.
-
Sianis
addikt
válasz
loszerafin #1193 üzenetére
String tömb tud utazni XML-ben?
Sianis
-
Sianis
addikt
válasz
loszerafin #1173 üzenetére
Már megjelent a stabil Netbeans 6.0.
Sianis
-
Peetry
senior tag
válasz
loszerafin #1173 üzenetére
ok de a kérdés jbuilder 2007-re vonatkozott.
-
lakisoft
veterán
válasz
loszerafin #1169 üzenetére
ezen még azért kell heggeszteni hogy működjön, de legalább az algoritmus megvan
-
fLeSs
nagyúr
válasz
loszerafin #1159 üzenetére
Még nem, de ha már belinkelted akkor átfutom. Köszi.
-
fLeSs
nagyúr
válasz
loszerafin #1157 üzenetére
Miért, szervereknél mást kéne használni?
-
fLeSs
nagyúr
válasz
loszerafin #1155 üzenetére
Értem amit írsz.
Nem tudok róla, hogy lenne külön Inteles és AMD-s Java, legalábbis a Sun oldalán nem találtam, csak egy fajtát.
Namost én nem JVM-eket akarok tesztelni, hanem procikat.De ezekszerint ennek csak akkor van értelme, ha többféle JVM-et használok? Maradjunk csak egynél. Így is millió tesztet kell még megnézni procinként.
Melyik a legelterjedtebb? Gondolom a Sun-é?... -
kalló
aktív tag
válasz
loszerafin #1148 üzenetére
köszönöm a linkek nagyon jók
-
Alvin_ti4200
félisten
válasz
loszerafin #1139 üzenetére
ó már túl vagyok ezen a részen, megoldottam az időzítést is Timer és TimerTask nélkül
Most írom az RMS részt, hogy tárolni és megjeleníteni is tudjam a HighScore-okat
-
Alvin_ti4200
félisten
válasz
loszerafin #1137 üzenetére
nem titkos, kedden délután már elárulhatom, akkor már túl leszek a bemutatásán és a leadásán
Konzultáltam ma a szakirány tanárommal és azt javasolta, hogy bonstam ketté a render() metódust, mégpedig rajzolós és billentyűzetelemzős részre. Módosítsam ezek alapján a Midletben a szál run() metódusát úgy, hogy először billvizsgálatot csinál, aztán vár valamennyit, aztán egy for ciklusba tegyem bele a rajzolós metódust és ehhez mérten igazítsam mennyi ideig sleepeljen a thread. Tehát pl. 1 mp-es képváltásnál thread.sleep(50) és ciklusváltozó 0-19. Most ezt fogom megpróbálni megcsinálni, remélem sikerrel járok és utána már "csak" az RMS (RecodStore) rész van hátra az eredmények mentéséhez és kiírásához (HighScore).
-
Alvin_ti4200
félisten
válasz
loszerafin #1135 üzenetére
megcsináltam az alábbi módon
(remélem jól értelmeztem a mondani valódat
)
int[] tomb1={25,85,145,25,85,145,25,85,145};
int[] tomb2={50,50,50,110,110,110,170,170,170};
int[] gombtomb={512,2,1024,4,256,32,2048,64,4096};
Random rnd=new Random();
int veletlen=rnd.nextInt(8);
dx=tomb1[veletlen];
dy=tomb2[veletlen];
sprite.next(dx,dy,veletlen);
lm.paint(g,0,0);
flushGraphics();
int keyStates=getKeyStates();
if (keyStates==gombtomb[veletlen]){
pontszam++;
}
else{
if(keyStates!=0){
pontszam=(pontszam)-1;
}
}Apró szépséghiba, hogy az időzítések össze-visszasága miatt a jó billentyűleütéseket is néha rossznak veszi és fordítva, illetve valamiért a 2,4,5,6,8 gombok értéke nulla
Pedig tudomásom szerint azok felveszik a LEFT_PRESSED, RIGHT_PRESSED, UP_PRESSED, DOWN_PRESSED és FIRE_PRESSED értékeit is. A gombtomb[]-ben a gombok sorrendjében tároltam le a koordinátákat, tehát az index maga a gomb száma. Lehet az a gond, hogy a paint és/vagy flushgraphics után tettem a feltételeket?
-
loszerafin
senior tag
válasz
loszerafin #1108 üzenetére
Egyébként az a "mellékhatása" az algoritmusnak, hogy a kihúzott számokat nagyság szerint
rendezve írja ki. -
loszerafin
senior tag
válasz
loszerafin #1107 üzenetére
Itt a Java kód:
Csak azért írom egy sorba, hogy ha vki gondolkodni akar, ne lássa rögtön a megoldást
/* */ int i=95; int x=5; while (i>0 && x>0) { if (Math.random()*i<=x) { System.out.println(i); x--; } i--; } -
jeri
tag
válasz
loszerafin #844 üzenetére
C és társai érték szerint
meg létezik:címszerint,eredmény-érték szerint,visszatérési érték szerint. -
almi
senior tag
válasz
loszerafin #922 üzenetére
Köszönöm szépen, hátha segít valamit..
-
Fisha
őstag
válasz
loszerafin #917 üzenetére
Hat igen, en pont ezek miatt a dolgok miatt, vettem ki a szotarambol.
-
shev7
veterán
válasz
loszerafin #917 üzenetére
ha jol tudom a switch case szerkezet egy goto-nak fele meg. Ezert van az, hogy nem lehet felsorolni a case utan tobb erteket, mivel akkor nem stimmelne a label. Es ezert van az, hogy kell a break, mert goto utan a kovetkezo sorban folytatod. Persze biztos meg lehetett volna oldani maskepp, de az nagy valoszinuseggel lassabb lett volna.
mod: Ha megnezzuk a C# fele switch megvalositast, akkor az annyibol kezdo-baratabb, hogy muszaj kitenni a break-et, ezert nem is nezheted be a fall-through-t
[Szerkesztve] -
Fisha
őstag
válasz
loszerafin #912 üzenetére
Megmondom oszinten nekem a switch-case eleve egy nyelvidegen dolog. Mar leirva is rosszul nez ki.
-
shev7
veterán
válasz
loszerafin #909 üzenetére
hat mondjuk erre kezenfekvo valasz az, hogy egyreszt nem egyertelmu mikor egyezik meg ket StringBuilder objektum (marmint tobbfele megkozelites is elkepzelheto), illetve, hogy nagyon ritkan hasonlitasz ossze ket stringbuilder objektumot, ami sokkal inkabb elkepzelheto az az, hogy egy Stringhez hasonlitod.
De barmikor kiterjesztheted a StringBuildert, es akkor ugy mukodik az equals, ahogyan csak szeretned -
robisz
senior tag
válasz
loszerafin #906 üzenetére
A for ciklus általános szintaxisa:
for (kifejezés1; kifejezés2; kifejezés3) {
...
}
Tehát három tetszőleges kifejezést kell megadni (lehet üres kifejezés is).
Viszont a Java-ban nem tudsz egy kifejezéssel különböző típusú referenciákat
létrehozni, tehát az alábbi deklaráció nem csak a for ciklusban, hanem mindenhol hibás:
int i = 0, byte j = 0;
Pontosvesszővel elválasztva már jó de így már két kifejezésnek számít:
int i = 0; byte j=0;
Azonos típusú változóból viszont többet is létrehozhatsz egy deklarációval:
int i = 0, j=0;
Ezt tehát nyugodtan beírhatod a kifejezés1 helyére. -
Forest_roby
őstag
válasz
loszerafin #898 üzenetére
Tudom, hogy én írtam későn! Nem hibáztattam senkit, maximum magamat.
Mindenesetre köszi ezeket a linkeket! -
robisz
senior tag
válasz
loszerafin #902 üzenetére
Ugyanezt el tudod érni a Logger-ból is, hiszen vannak loglevelek amiket be tudsz állítani
Pl. a kódba azt írod hogy:
log.debug(message);
Így a loglevel-t debug-ra állítva megjelenik az üzenet, de pl. info-ra állítva nem.
Az assert szintén debug-olásra használható, de nem logolásra!!
Arra találták ki, hogy olyan logikai állításokat helyez el a kódban, amelynek
az adott ponton teljesülnie kell. Ha mégsem akkor az kivált egy exception-t.
Amire Te használod, az ugyan működik, de nem szép mert nem erre találták ki. -
sekli
addikt
válasz
loszerafin #892 üzenetére
loni meg nekem se sikerult...
a lenyeget szerintem lattad egyebkent, marmint ami a grafikat illeti..., igazabol nem akartam nagyon belemenni, csak nekem azt tunt fol, hogy ha VisualBasic-ben irnek egy hasonlot (ahogy irtam is) es sokkal kevesebb eroforrast hasznal, a programozoja azt mondta, hogy a ''grafika'' itt az eroforrashasznalat, processzorido 90%-a..., a szimulacio, azert nem annyira komplex... a kerdesem igazabol arra iranyult, hogy a java ennyire lassu-e a megjelenitesben...? most kezdte el fejleszteni a fejleszto a 3D-s verziot, (az en modellem alapjan) es azt igeri, hogy a GPU rendereles miatt jobban fog futni..., ez egyebkent hiheto is... koszi, hogy foglalkoztal vele..., ahogy nezem mondjuk nem lettel fuggo...
-
shev7
veterán
válasz
loszerafin #899 üzenetére
errol irnal kicsit bovebben? mit ertesz azon, hogy eltunik, ha keszen vagy?
-
Forest_roby
őstag
válasz
loszerafin #896 üzenetére
1órát késtél a válasszal!
Hogy mi nem megy?
Az idáig működő részeket se látom át (igazán)...
Innentől kezdve meg az egész gáz...
pl az adatmódosítást hogyan érzékeli a program(, vagy gombenyomásra update-eljen)?
az update megírása se igazán megy...
Nincsenek nagy problémáim, csak nem értem az egészet!
mod: de mostmár mindegy!
[Szerkesztve] -
hdanesz
őstag
válasz
loszerafin #893 üzenetére
Köszi!
Az xp-ben már írtam,de nem válaszolt senki.
Megpróbálom a firefox-ost. -
sekli
addikt
válasz
loszerafin #874 üzenetére
nem en szeretnek javitani, hanem, erdekel a velemenyetek, hogy normalis-e, hogy egy ilyen program ennyit terhel..., a keszito szerint 90%-ot a ''grafika'' teszi ki...
[link] az oldal kozepe fele van egy tablazat: Tacticat Sailing Fields ott vannak a gombok, hogy S1, L1, t4... , arra kell kattintani, hogy elinduljon... -
Drizzt
nagyúr
válasz
loszerafin #877 üzenetére
Az volt a para, hogy a htm file bírálta felül. :S
Na más egyszerűbb kérdésem van. Appletet kell csinálni, írtam egy filet IntervalException.java néven, ahol van. Az importálásához kell még valami, hogy lássa? Elég idegesítő, hogy Unixon kell fejleszteni(ssh loginnal), így elég nehézkes, míg valamit kipróbálgtok... -
robisz
senior tag
válasz
loszerafin #875 üzenetére
Szia!
Logolásra a java.util.Logger osztály a megoldás (ez nem túl régen
került a Java-ba), vagy pedig a log4j csomag amit külön kell letölteni
és talán még az előbbinél is többen használják. Tudásban kb. ugyanaz a kettő. -
Fisha
őstag
válasz
loszerafin #865 üzenetére
Velemenyem szerint elso korben jdbc, servletek jsp-k, aztan egy tetszoleges mvc framework. Persze ha az a cel, hogy a konnyen el tudj helyezkedni. Ilyen temakorben keresnek a legtobb embert. Aztan johetnek ejb-k egyebek.
Egyebkent maga az, hogy j2ee annyira tag fogalmkor, hogy nem igazan lehet azt mondani, hogy akkor en most j2ee-t tanulok. -
robisz
senior tag
válasz
loszerafin #865 üzenetére
Ha később komolyan akarsz Javazni, esetleg ilyen téren szeretnél dolgozni,
akkor egyet ajánlok: J2EE.
Ha a ''sima'' Java már elég jól megy, akkor mindenképp érdemes megismerkedni vele.
Az UML és a Design Pattern-ek ismerete mindig (de J2EE-hez különösen) jól jöhet! -
robisz
senior tag
válasz
loszerafin #858 üzenetére
Ha jól értem a JVM-ek működését az olvasmányaim alapján, akkor nincs garantálva, hogy időosztásosan működjenek a JVM-ek. Azaz, ha azt akarom, hogy a többi szál is labdába rúghasson, kell sleep()-et tennem a hosszan futó ciklusaimba.
Igazából a yield() metódust találták ki megoldásként erre problémára, de sajnos
kínszenvedés a használata mert nagyon nem egyértelmű mikor kell meghívni.
(Valami olyasmit lehet elképzelni, hogy pörgetsz egy számlálót a ciklusodban és
minden 10-edik futáskor meghívod a yield()-et vagy valami hasonló)
Szerencsére azonban ez a probléma a ''való életben'' elég ritkán fordul elő,
hisz az ember általában olyan szálakat ír amelyek egyébként is blokkolnak.
Pl. mert egy socket-ről akarsz olvasni vagy vársz egy beérkező üzenetre... stb. -
shev7
veterán
válasz
loszerafin #856 üzenetére
mivel a program alapesetben mast is csinal, nem csak a lockolt teruleten tolti az idejet ez nem szokott problemat okozni, de a te peldadban tenyleg jol jon egy kis sleep.
-
loszerafin
senior tag
válasz
loszerafin #855 üzenetére
Még annyit hozzáteszek azok kedvéért, akik később olvassák ezt a topicot:
Azt hiszem nem szerencsés egy több szálon futó programban olyan ciklust futtatni, amiben nincs Thread.sleep(), mert így nem hagyunk időt másik szálaknak a bekapcsolódásra, ráadásul zabálja a processzort, szóval
valami ilyesmi jobb, mint ami a fenti kódjaimban látható:
while(!end){
synchronized (lock) {
cnt += 1;
cnt -= 1;
};
try {
Thread.sleep(10);
} catch (InterruptedException e) {}
} -
shev7
veterán
válasz
loszerafin #851 üzenetére
nezd meg ezt:
class Main {
static int cnt = 0;
static boolean end = false;
static Object lock = new Object();
static class ModCounter extends Thread {
public void run() {
while(!end) {
synchronized (lock) {
cnt += 1;
System.out.println(cnt);
cnt -= 1;
}
}
}
}
public static void main(String[] args)
throws InterruptedException{
ModCounter modc = new ModCounter();
ModCounter modc2 = new ModCounter();
modc.start();
modc2.start();
Thread.sleep(500);
end = true;
}
}
[Szerkesztve] -
Lortech
addikt
válasz
loszerafin #849 üzenetére
Valóban, referencia típusnál is átmásolódik a hívó paraméter referenciája a hívott paraméterbe. De mivel ez egy referencia, azaz mindkettő rámutat majd ugyanarra az objektumra, ezért mellékhatásokkal jár, ha a lokál paraméterrel mutatott objektumot mdosítjuk. Maga a paraméterként átadott objektum értéke, referenciája valóban nem fog megváltozni. Viszont az előbb említett mellékhatás miatt célszerű megkülönböztetni a hagyományos érték szerinti paraméterátadástól. Mint ahogy a ''valódi'' referencia szerintit is meg kell különböztetni tőle, ahol nem a referencia adódik át, hanem magának a referencia típusú változónak a címe, így a hívott eljárásban egy és ugyanaz a változó, mint a hívás helyén.
Hogy hogy hívjuk, az már nekem mindegy, ha a sun simán érték szerintinek írja, ám legyen, nem ez a lényeg, hanem hogy értsük a működését. C#-ban egyébként létezik mind a három általam említett paraméterátadás, dehát ez nem az a topik. -
Lortech
addikt
válasz
loszerafin #844 üzenetére
Kérdés az, hogy mit tekintesz értéknek.
Én azt mondtam volna, amit megadtak megoldásnak. De szó szerint véve elfogadható az A is, mivel egy objektum értéke a referenciája. (szintaktikailag)
Ugyanakkor ha azt mondod, hogy referencia szerinti átadás van objektumoknál, szerintem akkor sem mondasz hülyeséget (sőt), mivel az az érték ami átadódik az egy referencia, így ugyanazt mondod, csak a referencia pontosabb megnevezés, bővebb jelentéssel bír, épp ezért ez utóbbit preferálom. -
shev7
veterán
válasz
loszerafin #844 üzenetére
szerintem meg teljesen jol, es erthetoen van leirva, nem ertem mi a gond? Az ertek es a referencia szerinti atadas kozott az a leglenyegesebb kulonbseg, hogy az eredeti ertek megvaltozik-e. Ha objektumot adsz at, es megvaltoztatod egy parameteret, akkor az eredetinek is valtozni fog. Marpedig ekkor a parameteratadas nem lehet ertek szerinti
-
robisz
senior tag
válasz
loszerafin #838 üzenetére
A Calendar osztály set metódusában a hónapok 0-tól kezdve számozódnak, míg az év és a nap természetesen 1-től indul
Igen ez tényleg furának nevezhető, de a Calendar osztály estében az előre definiált
static konstansokat (JANUARY, FEBRUARY stb...) illik használni, innentől kezdve
pedig édesmindegy hogy a január a háttérben 0 vagy 5000 -
robisz
senior tag
válasz
loszerafin #833 üzenetére
Ugyanilyen ''logikával'' akár lehetne a string vége endIndex-17 -nél. Ekkor pl.
substring(0,17)-re kapnánk meg az első karakterét a stringnek.
Lehet hogy elsőre furcsának tünik, de azért van benne némi logika
Ha csíkokat rajzolsz a string karakterei közé így:
| H | e | l | l | o |
akkor a substring-nek azt kell megadni, hogy melyik két ''csík'' közötti részt
kéred (0-tól kezdve az indexeket).
További előny, hogy az endIndex és a startIndex különbsége így pont az
eredmény hossza lesz. Tehát így is hasznáhatod:
substring(startindex, startindex + 10)
Ami visszaadja a startindex-től kezdődő 10 hosszúságú stringet.
[Szerkesztve] -
Protezis
őstag
válasz
loszerafin #833 üzenetére
Itt van meg par erdekes eszrevetel a Javaval kapcsolatban: [link]
-
shev7
veterán
válasz
loszerafin #830 üzenetére
hat pedig eleg egyertelmu a mukodese:
''Returns a new string that is a substring of this string. The
substring begins at the specified <code>beginIndex</code> and
extends to the character at index <code>endIndex - 1</code>.
Thus the length of the substring is <code>endIndex-beginIndex</code>.'' -
robisz
senior tag
válasz
loszerafin #827 üzenetére
A gyakorlatban ugyan ennek vajmi kevés jelentősége van, mert az Integer
érték egyenlőségét úgyis equals-al vizsgáljuk, de ez akkor is... meghökkentő -
robisz
senior tag
válasz
loszerafin #823 üzenetére
false, false
Tipikus autoboxing kérdés, amit így is meg lehet fogalmazni:
while (i<=j && i>=j && i!=j) {
;
}
Hogyan deklaráljuk i-t és j-t hogy a fenti ciklus végtelen legyen? -
Lortech
addikt
válasz
loszerafin #821 üzenetére
Referencia típusoknál mindig allokáció van.
Ha így érdekel a téma, ajánlom áttanulmányozásra az alábbi írást és a kommenteket : [link] -
loszerafin
senior tag
válasz
loszerafin #808 üzenetére
A beszélgetéseteket olvasva rájöttem, hogy elég megnéznem a bytekódot:
class MoreInt {
public static void main(String[] args){
for (int i=0; i<2; i++){
int j = 10;
}
}
}
És a bytekód:
Code:
0: iconst_0
1: istore_1
2: iload_1
3: iconst_2
4: if_icmpge 16
7: bipush 10
9: istore_2
10: iinc 1, 1
13: goto 2
16: return
}
A lokális változók számozva vannak, a j a kettes számú. A fordításkor ennek biztosít helyet a fordító, futáskor végig ezt a helyet használja.
[Szerkesztve] -
dantes
tag
válasz
loszerafin #808 üzenetére
A {} blokkban deklarált változók csak a {} blokkon bellül érvényesek.
Vagyis az történik, hogy lefoglal az n számára tárterületet, majd felszabadítja, megint lefoglalja és megint felszabadítja.
De egy okos fordítóprogram ki is optimalizálhatja, és valójában nem csinál semmit. -
robisz
senior tag
válasz
loszerafin #778 üzenetére
A SUNDAY, MONDAY stb.. olyanok mintha a Day osztály statikus field-jei lennének,
(a compiler azzá is alakítja őket a háttérben) ÉS egyúttal Day típusú objektumok.
A kettő korántsem zárja ki egymást!
Így már gondolom érthető a
Day day = Day.MONDAY;
írásmód, hiszen a Day osztály statikus field-jére hivatkozol, ami egy Day típusú
objektum. Pontosan ahogy te is leírtad.
Ha akarod írhatod így is:
Day day = MONDAY;
de akkor a statikus importot kell használnod:
import static Day.*;
és ezzel gyönyörűen visszakanyarodtunk a legelső kérdésedhez
[Szerkesztve] -
robisz
senior tag
válasz
loszerafin #776 üzenetére
Pontosan így van
Az enum egy speciális osztály a Java-ban (ami egyébként a java.lang.Enum
leszármazottja lesz) a benne szereplő ''konstansok'' pedig sima objektumok.
Egyik nagy előnyük, hogy switch-ben is használhatóak. -
robisz
senior tag
válasz
loszerafin #774 üzenetére
Egyedül az nem világos, hogy ki, mikor hívja meg a Day konstruktort
Ez is benne volt a válaszomban csak talán nem volt elég világos:
A MONDAY(''Monday'') sor az enum kódjában egyenértékű az általad leírt
konstruktorhívással. Olyan mintha statikus változót hoznál létre valahogy így:
Day MONDAY = new Day(''Monday'');
Tehát azzal hogy felsoroltad a 7 napot az enum-ban, egyúttal a konstruktor
is meghívódott mind a 7 alkalommal.
Kivülről nem tudsz új példányokat létrehozni az enum-ból, de nem is nagyon lenne értelme. -
robisz
senior tag
válasz
loszerafin #772 üzenetére
Szia!
Az enum típusra úgy érdemes gondolni mint egy sima osztályra.
Annyi a különbség, hogy ebből az osztályból közvetlenül sosem hozunk
létre példányokat, csak az előre definiált ''konstansokat'' használhatjuk.
A példában tehát létrejön egy Day ''osztály'' és annak a 7 példánya (SUNDAY,
MONDAY, stb...)
Legegyszerűbb formában tehát az enum így nézne ki:
enum Day {
SUNDAY,
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY;
}
Mint minden sima osztályban az enum-ban is írhatunk metódusokat, tárolhatunk
egyéb adatokat.
Alapból a toString() metódus a konstans nevével megegyező string-et ad vissza,
tehát a System.out.println(Day.MONDAY) eredménye ''MONDAY''.
A te példádban az enum-ban tárolunk egy dayname string-et is. Itt jön be
a képbe a konstruktor szerepe. Igaz te kivülről sosem hivod közvetlenül a
konstruktor-t, de a SUNDAY(''Sunday'') sor az enumban valójában egy konstruktor
hívást jelent, azaz a ''Sunday'' string eltárolodik a dayname változóba.
A toString metódust is felüldefiniálódik a te példádban, mégpedig úgy, hogy ezt a
dayname String-et adja vissza. Igy a System.out.println(Day.MONDAY) eredménye
''Monday'' lesz ''MONDAY'' helyett.
Azt hogy milyen adatokat tárolsz az enum-ben és milyen konstruktorokat írsz
te döntöd el, csak a konstansok felsorolásánal (SUNDAY, MONDAY stb) a megfelelő
számú és típusú paramétert kell átadni.
[Szerkesztve] -
robisz
senior tag
válasz
loszerafin #769 üzenetére
Szia!
A static import viszonylag új dolog a Java-ban az 1.5-től kezdve jött képbe.
A hagyományos import arra jó, hogy a package név kiirása nélkül hivatkozhass
osztályokra. Ha például azt írod, hogy
import java.util.HashMap;
akkor a kódban simán HashMap-ként hivatkozhatsz a java.util.HashMap osztályra.
Az import java.lang.Math.*; értelmetlen, mivel az osztályon belüli dolgokat
nem lehet beimportálni a sima importtal.
A Math osztályra egyébként már eleve hivatkozhatsz rövid névvel, mivel az a java.lang package-ben van. Ez az egyetlen package amit soha nem kell beimportálni, mert mindig alapból be van importálva.
Az ''régi'' import esetén tehát a package név elhagyható, de nem
az osztálynév! Java 1.5 előtt tehát a PI konstansra úgy tudtál hivatkozni, hogy
Math.PI
Itt jön be a statikus import a képbe, mivel pont arra találták ki, hogy statikus
változók használatakor ne kelljen beirni az osztály nevét sem.
Ha tehát azt mondod, hogy
import static java.lang.Math.PI;
akkor attól kezdve sima PI-t irhatsz a kódban.
Az interfészek, osztályok importja között nincs különbség.
[Szerkesztve]
Új hozzászólás Aktív témák
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- LG 27GS95QE - 27" OLED / QHD 2K / 240Hz & 0.03ms / 1000 Nits / NVIDIA G-Sync / AMD FreeSync
- Samsung Galaxy A53 5G 128GB Kártyafüggetlen, 1Év Garanciával
- Bomba ár! Lenovo ThinkPad T450 - i5-5GEN I 8GB I 500GB I 14" HD+ I Cam I W10 I Garancia!
- GIGABYTE B650 UD AX WiFi AM5 DDR5 alaplap bontatlan csomagolásban 3 év garancia 27% áfa
- AKCIÓ! nVidia Quadro P4000 8GB GDDR5 videokártya garanciával hibátlan működéssel
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Laptopszaki Kft.
Város: Budapest