nocneszczury nocneszczury 17.06.2015, 18:56:58 1 #programowanie #java Mam następujący problem: mam dużo pól które mają bardzo podobną nazwę (a1, a2, a3....). Chciałbym w pętli odwołać się do tych pól, mniej więcej tak: ("a"+iterator).metoda(). Jak to zrobić? Cronox
KooooooooooT KooooooooooT 17.06.2015, 18:59:55 9 @nocneszczury: nie widze innej opcji niz wrzucenie ich do jakiejs listy lub tablicy red-bearded legolass sfa Szab SwordPL +4 innych
n.....y konto usunięte 17.06.2015, 19:05:26 0 @nocneszczury: Refleksja. https://pl.wikipedia.org/wiki/Mechanizm_refleksji
frax frax 17.06.2015, 19:08:15 0 @nocneszczury: Jeżeli masz dużo takich pól, to pewnie zamiast nich powinieneś mieć tablicę.
r3m0 r3m0 17.06.2015, 19:18:06 9 @nienarodzony: Refleksję to ja bym zalecał przy używaniu takich cudów. ilmash gierekg frax KooooooooooT SuperZelazko +4 innych
jacekprim jacekprim 17.06.2015, 19:26:49 3 class Test { private int liczba1 = 1; private int liczba2 = 5; private int liczba3 = 7; public void wypiszLiczby() { for (int i = 1; i <= 3; i++) { try { int aktualnaLiczba = (int)getClass().getDeclaredField("liczba" + i).get(this); System.out.println(aktualnaLiczba); } catch (Exception e) { throw new IllegalStateException(e); } } }}Wynik:157 nocneszczury Patres konto usunięte
Darjo Darjo 17.06.2015, 19:48:42 via iOS 6 @jacekprim: refleksja nie jest ani wydajna ani elegancka, ani nie kontroluje typow itd itp. Zamien dlugasna liste pol na tablicealbo liste. Waffenek ilmash Hozjusz sambarumba nygga +1 innych
Mam następujący problem: mam dużo pól które mają bardzo podobną nazwę (a1, a2, a3....). Chciałbym w pętli odwołać się do tych pól, mniej więcej tak: ("a"+iterator).metoda(). Jak to zrobić?
private int liczba1 = 1;
private int liczba2 = 5;
private int liczba3 = 7;
public void wypiszLiczby() {
for (int i = 1; i <= 3; i++) {
try {
int aktualnaLiczba = (int)getClass().getDeclaredField("liczba" + i).get(this);
System.out.println(aktualnaLiczba);
} catch (Exception e) {
throw new IllegalStateException(e);
}
}
}
}
Wynik:
1
5
7