Új hozzászólás Aktív témák
-
Szmeby
tag
válasz
plaschil
#6108
üzenetére
Amikor enumot csinálsz, nyugodtan tekintsd őket konstansnak. Vagyis a legtöbb esetben felesleges mellé static final cuccokat definiálni, azok simán elvannak az enum obejktumon belül is. Pl. a KapacitasTipus-ban.
Vagy eleve a double értékeket adod be a konstruktornak (0.5 és 1.0), vagy ha ragaszkodsz az egész számokhoz is, akkor a konstruktorban elosztod százzal. Így a getter sokkal egyszerűbb lesz, megszűnik a felesleges komplexitás (if).Valami ilyesmi módon:
public enum KapacitasTipus {
M0(100), M10(50);
private final int kapacitasTipus;
private final double ertek;
private KapacitasTipus(int tipus) {
this.kapacitasTipus = tipus;
this.ertek = tipus / 100.0;
}
public int getKapacitasTipus() {
return this.kapacitasTipus;
}
public double getKapacitasTipusErtek() {
return this.ertek;
}
}De akár második konstruktor argumentumként is belőhető a másik szám, ha erre tényleg szükség van.
Ami a komplexitást illeti, amikor gigászi if-else vagy switch-case füzéreket látsz, akkor érdemes elgondolkodni azon, hogy talán nem a legjobb helyen vannak. Gondolok itt a Szerzodes.createList() metódusra, ahol egy stringből enum objektumot készítenél. Szerencsére erre létezik az enumban beépített metódus:
pkod = PontKod.valueOf(kod);
...
ktipus = KapacitasTipus.valueOf(kapacitastipus);Amit tudni érdemes róla, hogy exception-t dob, ha olyan stringet kap, amihez nem talál enum példányt. Ha szükséges, ezt ajánlott lekezelni egy try-catch-ben.
A PontKod átalakításával még átláthatóbb kódod lesz.Az enumnak van még pár hasznos beépített metódusa (name(), ordinal(), values()), érdemes őket megismerni.
Új hozzászólás Aktív témák
A topicot kiemeltem. Valaki nem akar egy nyitó hsz-t írni?:))
- Google Pixel Watch 3 - képpontos idő
- The Division 2 (PC, XO, PS4)
- Kerékpárosok, bringások ide!
- Motorolaj, hajtóműolaj, hűtőfolyadék, adalékok és szűrők topikja
- Vicces képek
- NVIDIA® driverek topikja
- Windows 11
- Milyen belső merevlemezt vegyek?
- Budapest és környéke adok-veszek-beszélgetek
- Autós topik
- További aktív témák...
- Lenovo Thinkpad T14 Ryzen 5 4650u/8GB/256GB SSD/14"FHD laptop
- ASUS ROG STRIX GeForce RTX 3060 12GB eladó
- DELL OPTIPLEX 7010 SFF PC, I5-3570 CPU, 2 GB R5 430 VGA, Windows 10
- ASUS Vivobook Pro 15 - 15.6" FHD IPS 144Hz - Ryzen 5-5600H - 16GB - 512GB - RTX 3050 - MAGYAR - Win1
- Lenovo 40B0 ThinkPad Thunderbolt 4 Workstation Dock (300W) (40B00300)
- GYÖNYÖRŰ iPhone 14 Pro 128GB Space Black -1 ÉV GARANCIA - Kártyafüggetlen, MS4022
- 241 - Lenovo Legion 5 (15IRX10) - Intel Core i7-13650HX, RTX 5060
- 215 - Lenovo LOQ (15IRX9) - Intel Core i7-13650HX, RTX 4060 (ELKELT)
- 27% - Samsung S27D360GAU VA Monitor! 100Hz / 1920x1080 / 4ms
- Eladó/BONTATLAN Lenovo LOQ i7-13650HX 24GB 1TB RTX 4060 8GB
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest

