- Senua's Saga: Hellblade II - Íme a végleges gépigény
- Marvel Snap
- Egyre nagyobb a balhé a Helldivers II körül
- Konzolokról KULTURÁLT módon
- Counter-Strike: Global Offensive (CS:GO) / Counter-Strike 2 (CS2)
- Fallout 4
- EAFC 24
- Call of Duty: Modern Warfare III (2023)
- Genshin Impact (PC, PS4, Android, iOS)
- Helldivers 2 (PC, PS5)
Új hozzászólás Aktív témák
-
TBG
senior tag
Az egészet nem értem egyébként.
Car car = new Car();
car.addTire(new Tyre(10));
car.addTire(new Tyre(11));Ez a 3 sor megcsinálja azt, amit itt szeretnél tenni...
List<Tyre> carTires = car.getTires();
System.out.println("Before: " + carTires.size());
car.setTires(carTires);Gondolom, azt vártad, hogy lesz egy 4 elemű listád [10,11,10,11] értékekkel? Vagy mi volt az elképzelés?
Egyébként így működött volna:public class Car {
private List<Tyre> tires = new ArrayList<Tyre>();
public void setTires(List<Tyre> t) {
this.tires.clear();
this.tires.addAll(t);
}
// Egyéb lekérdező metódusok
}
public class CarTest {
public static void main(String[] args) {
Car car = new Car();
car.addTire(new Tyre(10));
car.addTire(new Tyre(11));
List<Tyre> carTires = car.getTires();
System.out.println("Before: " + carTires.size());
Car anotherCar = new Car();
anotherCar.setTires(carTires);
System.out.println("After (1): " + car.getTires().size());
System.out.println("After (2): " + anotherCarTires.size());
}[ Szerkesztve ]
ZTE Grand X powered by Intel® Atom™, Eladó: Panasonic HC-V10 HD+16GB SD kártya 25K.
-
WonderCSabo
félisten
Nyilván szeretett volna egy olyan metódust, ami egyszerre az összes kereket lecseréli. A setTires nevéből is ítélve én ezt így csináltam volna:
public class Car {
private List<Tyre> tires = new ArrayList<Tyre>();
public void setTires(List<Tyre> t) {
this.tires = t;
}
// Egyéb lekérdező metódusok
} -
TBG
senior tag
válasz WonderCSabo #3302 üzenetére
Nem lett volna rossz az eredeti megoldás, ha a kerekeket nem ugyanabból a Car példányból veszi
ZTE Grand X powered by Intel® Atom™, Eladó: Panasonic HC-V10 HD+16GB SD kártya 25K.
-
TBG
senior tag
válasz WonderCSabo #3304 üzenetére
Nem tudjuk, hogy mit akart.
ZTE Grand X powered by Intel® Atom™, Eladó: Panasonic HC-V10 HD+16GB SD kártya 25K.
-
TBG
senior tag
válasz WonderCSabo #3306 üzenetére
!"úgy tűnik".equals("tudjuk")
[ Szerkesztve ]
ZTE Grand X powered by Intel® Atom™, Eladó: Panasonic HC-V10 HD+16GB SD kártya 25K.
-
Lacces
őstag
Kérdésedre válaszolva ezt a minta feladatot láttam valahol mint java-s teszt. Először elméletben találtam mellé, aztán megnéztem Eclipse alatt, de nem értettem, hogy miért keletkezik a hiba.
Annyit PHP-ztam az elmúlt időszakban a munka miatt, hogy kopik a Java tudásom... úgyhogy vizsgák után egyből akarok gyakorolni, meg hát voltam közben életem első Java-s interjú tesztjén...
Mondjuk úgy, hogy a vereség arra ösztökél, hogy jobb legyek... :/Ha magam kellett volna, hogy programozam, akkor nem így csináltam volna természetesen
[ Szerkesztve ]
-
válasz WonderCSabo #3304 üzenetére
Ha csak a referenciát állítja át, akkor a kerekek listáját kívülről is lehetne változtatni, az pedig biztosan nem jó.
-
WonderCSabo
félisten
válasz Peter Kiss #3309 üzenetére
Így is lehet kívülről változtatni, csak nem az egész listát egyben, hanem kerekenként.
[ Szerkesztve ]
-
válasz WonderCSabo #3310 üzenetére
Kívülről nem lehet, csak a Car-on keresztül, és itt ez a lényeg.
-
WonderCSabo
félisten
válasz Peter Kiss #3311 üzenetére
Már hogy ne lehetne?
public void setTires(List<Tyre> t) {
this.tires.clear();
this.tires.addAll(t);
}Meghívod így:
List<Tyre> l = new ArrayList<>();
l.add(new Tyre(10));
car.setTires(l);
l.get(0).changeTyre(); // ez a fv. megváltoztatja az Tyre-t valamilyen módon
// a Car-ben ugyanerre van referencia, tehát abban lévő is megváltozik[ Szerkesztve ]
-
válasz WonderCSabo #3312 üzenetére
Persze, önmagában a kereket lehet, de a teljes collection-t nem, ez a fontos.
-
TBG
senior tag
Az egész koncepció szerintem téves. Alapból a Car osztály Tyres collectionjához semmilyen módon nem kellene biztosítani hozzáférést. addTye(Tyre t), removeTyre(Tyre t), stb. metódusokon keresztül kellene csak engedni az elérést, különben az eredeti problémához hasonló eredmények születnek....én kapásból a setTyres(List<Tyre> tires) metódust nem is implementálnám...
[ Szerkesztve ]
ZTE Grand X powered by Intel® Atom™, Eladó: Panasonic HC-V10 HD+16GB SD kártya 25K.
-
TBG
senior tag
Alapból a Car osztály Tyres collectionjához semmilyen módon nem kellene biztosítani hozzáférést
Alapból a Car osztály Tyres collectionjához semmilyen módon nem kellene biztosítani DIREKT hozzáférést
ZTE Grand X powered by Intel® Atom™, Eladó: Panasonic HC-V10 HD+16GB SD kártya 25K.
-
TBG
senior tag
válasz WonderCSabo #3316 üzenetére
mert értelmesen hívogattam a metódust
Igen, Te értelmesen hívod, de láttam egy csomó API-t, ahol vannak ilyen aknák és egyesek bizony rá is lépnek.
ZTE Grand X powered by Intel® Atom™, Eladó: Panasonic HC-V10 HD+16GB SD kártya 25K.
-
-
WonderCSabo
félisten
Sztem meg kell találni a kompromisszumot az enkapszuláció stb. megvédése és a józan kód között. Például sztem az ocsmány, ha az összes elem hozzáadására nem biztosítasz fv-t, hanem a hívóra hagyod azt, csomó kód duplikációt stb eredményezve, pedig ezt gyakori feladatot az adott osztálynak kéne biztosítania.
-
TBG
senior tag
válasz WonderCSabo #3319 üzenetére
Igazad van. Kompromisszum. Saját rendszerben több és kevesebb szabadsága van az embernek, mintha API-t fejleszt.
ZTE Grand X powered by Intel® Atom™, Eladó: Panasonic HC-V10 HD+16GB SD kártya 25K.
-
-
TBG
senior tag
válasz Peter Kiss #3321 üzenetére
Igen. Max. a terminológia más
Amit én fejlesztek egy cégen belül alkalmazást, az nem API, a Spring az API és Framework.
[ Szerkesztve ]
ZTE Grand X powered by Intel® Atom™, Eladó: Panasonic HC-V10 HD+16GB SD kártya 25K.
-
tvamos
nagyúr
válasz WonderCSabo #3316 üzenetére
Hat igen, ha egyedul visszel egy projektet, ez nem gond...
"Mindig a rossz győz, és a jó elnyeri méltó büntetését." Voga János
-
sutszi
veterán
úgyérted xml vagy annotáció?
jó kérdés
Előbb volt az xml és későbbi fejlesztés annotációk használata...Használhatod vegyesen is de ekkor az xml lesz az erősebb a kettő közül.Mondja, Mr. Babbage, ha rossz adatokat ad meg a gépnek, akkor is jó válasz fog kijönni belőle?" Képtelen vagyok felfogni azt az értelmi zavart, ami valakit egy ilyen kérdés feltevésére késztethet. - by Charles Babbage
-
n00n
őstag
Sziasztok!
Van egy egyszerű java projektem. Van benne JFrame, rajta egy JPanelel. Ezen van egy JButton, amire ha rányomok megjelenik egy JDialog. A JDialogon van egy JProgressBar. Amit szeretnék, hogy mikor megjelenik a JDialog kezdje el a fájlt másolni (gondolom külön szálon) és frissítse a JProgressBart. Ötlet, hogy merre induljak el?
Egyelőre itt vagyok:
JDialog:
private int allapot=0;
allapotJelzo.setValue(allapot);
allapotJelzo.setStringPainted(true); -
sutszi
veterán
Hát ez jó kérdés...igazából én annotáció párti vagyok. Elvileg azért találták ki az xml helyett/mellett mert időnként az xml képes volt elszabadulni és egy nagy kupac nehezen áttekinthető maszlag volt.
Az annotációk meg ott vannak az osztályok "felett"...szerintem átláthatóbb. Ez egy jogos és hasznos fejlesztés volt.
Mondja, Mr. Babbage, ha rossz adatokat ad meg a gépnek, akkor is jó válasz fog kijönni belőle?" Képtelen vagyok felfogni azt az értelmi zavart, ami valakit egy ilyen kérdés feltevésére késztethet. - by Charles Babbage
-
TBG
senior tag
+1
ZTE Grand X powered by Intel® Atom™, Eladó: Panasonic HC-V10 HD+16GB SD kártya 25K.
-
n00n
őstag
válasz WonderCSabo #3330 üzenetére
Ez alapján megírtam. Viszont ugye mondanom se kell, hogy "üres" ablakot látok, mert lefogja a GUI-t a fájlmásolás. Ezért írtam egy külön osztályt ami egy szál és azon hozom létre a ProgressMonitorInputStream-t. Viszont a konstruktor első eleme a szülő. Hogyan tudom megadni a főablakomat, mert az alapértelmezetten private?
private sajatfeladat.FoPanel foPanel1;
-
n00n
őstag
További kérdés: Keresem, de nem találok rá módot, hogy átírjam a ProgressMonitorInputStream címét, illetve, hogy ne legyen cancel gomb. Nincs ilyen konstruktora és metódusai sem. Ötlet?
Szerk.: Valóban. Én néztem be. Ebben a hozzászólásban azonban még mindig nem tudtam megoldani a címet és mégse gombot.
[ Szerkesztve ]
-
WonderCSabo
félisten
Ott vmi gáz lesz, mert a SwingWorkernek pont az a lényege, hogy a doInBackground fv, amit az execute hív meg, egy külön szálon fut le.
Cím:
UIManager.put("ProgressMonitor.progressText", "Progress title?");
[ Szerkesztve ]
-
n00n
őstag
válasz WonderCSabo #3335 üzenetére
Köszönöm. Szóval nem lehet, csak ha sajátot csinálok. És akkor legalább átnevezhetem Mégsére?
-
n00n
őstag
válasz WonderCSabo #3337 üzenetére
Köszönöm. Gondoltam, hogy valami ilyesmi. Elnézést a sok lammer kérdésért.
-
n00n
őstag
válasz WonderCSabo #3330 üzenetére
És az miét lehet, hogy másoltatok vele egy 3GB-s fájlt és kb 2.4 GB-nél éri el a 100%-ot a progressBar és utána 0%-ra ugrik a maradék másolásáig. Miért?
-
n00n
őstag
válasz WonderCSabo #3340 üzenetére
Nem. Legalábbis úgy tűnik.
-
sutszi
veterán
Nem követtem az eddigieket, és csak a padról böfögök be, de nem lehet, hogy valamiben tárolódik a fájlméret és az túlcsordul?
[ Szerkesztve ]
Mondja, Mr. Babbage, ha rossz adatokat ad meg a gépnek, akkor is jó válasz fog kijönni belőle?" Képtelen vagyok felfogni azt az értelmi zavart, ami valakit egy ilyen kérdés feltevésére késztethet. - by Charles Babbage
-
pakriksz
őstag
én is erre gondoltam, de a 32 bit túlcsordulása az 2 milliárd 147 millió valamennyinél van van. Azon a 2,4 giga már mindenképp túl van.
Troll (nemhivatalos definíció): az akinek véleménye nem tetszik nekünk/nem értünk vele egyet. (10-ből 9 fanboy ezt ajánlja) || Fanboy 8 in 1 (Intel, AMD, Nvidia, konzol, PC,+minden politikai oldal) hiszen "ahol nem mi vagyunk, ott az ellenség"
-
n00n
őstag
A legegyszerűbb, ha ideírom a forráskódot:
class Copy extends SwingWorker<Void, Void> {
private File selectedfile = new File("D:/Adatok/proba.file");
private File chosenDestination = new File("D:/Adatok/ide/proba.file");
@Override
protected Void doInBackground() throws Exception {
try {
FileInputStream fileInputStream = new FileInputStream(
selectedfile);
BufferedInputStream bufferedInputStream = new BufferedInputStream(
fileInputStream);
ProgressMonitorInputStream progressMonitorInputStream;
UIManager.put("ProgressMonitor.progressText", "Mentés másolása");
UIManager.put("OptionPane.cancelButtonText", "Mégse");
progressMonitorInputStream = new ProgressMonitorInputStream(MentesPanel.this, "Fájl másolása folyamatban", bufferedInputStream);
File outputFile = new File("" + chosenDestination);
FileOutputStream fileOutputStream = new FileOutputStream(
outputFile);
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(
fileOutputStream);
int data;
byte[] buffer = new byte[1024];
while ((data = progressMonitorInputStream.read(buffer)) > 0) {
bufferedOutputStream.write(buffer);
}
bufferedOutputStream.close();
progressMonitorInputStream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
@Override
public void done() {
JOptionPane.showMessageDialog(MentesPanel.this, "A mentés másolása befejeződött!", "Kész", 1);
}
}
} -
-
n00n
őstag
válasz WonderCSabo #3348 üzenetére
A gyenge angoltudásommal feltettem, kíváncsi vagyok valaki megmondja-e mi nem stimmel.
Új hozzászólás Aktív témák
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- NVIDIA GeForce RTX 4080 /4080S / 4090 (AD103 / 102)
- Fotók, videók mobillal
- Politika
- cigam: Milyen NAS-t vegyek?
- Suzuki topik
- Autós topik
- Kerékpárosok, bringások ide!
- Feltörték a PROHARDVER!-es regisztrációmat! (vagy elvesztettem a belépési emailcímemet)
- Szemüveges topik
- NVIDIA GeForce RTX 4060 / 4070 S/Ti/TiS (AD104/103)
- 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