Reflexion para contar valores en un datatable
Algunas ocasiones tenemos que contar una cantidad valores en los atributos, generalmente tendríamos que hacerlo propiedad por propiedad.
Contamos con un Entity
necesitaríamos un código como donde veríamos múltiples condiciones y tenemos que usar cada atributo mediante el método get, en este ejemplo serian 31 campos. Imaginemos el escenario que sea una cantidad mayor, tendríamos un segmento de código mas o menos como el que mostramos aquí.
for (Agente a : agenteList) {
t1 = 0;
t2 = 0;
t3 = 0;
t4 = 0;
for (Reservadoagente r : reservadoagenteList) {
if(r.getTurno1() == 1 || r.getTurno2() == 1 || r.getTurno3() == 1 || r.getTurno4() ==1 ,,, r.getTurno31()==1 ){
t1++;
}
else{
if(r.getTurno1() == 2 || r.getTurno2() == 2 || r.getTurno3() == 2 || r.getTurno4() ==2 ,,,
r.getTurno31()==2 ){
t2++;
}
else{
if(r.getTurno1() == 3 || r.getTurno2() == 3 || r.getTurno3() == 3 || r.getTurno4() ==3 ,,,
r.getTurno31()==3){
t3++;
}else{
if(r.getTurno1() == 4 || r.getTurno2() == 4 || r.getTurno3() == 4 || r.getTurno4() ==4 ,,,
r.getTurno31()==4){
t2++;
}
}
}
...Para evitar todo esto podemos usar el API reflexión.
Simplemente invocamos los métodos get de los atributos Turnodia, y comparamos el resultado para determinar si es un 1, 2, 3, 4. Y con esto tendremos un contador de cada valor,.
Last updated
Was this helpful?