Estoy tratando de determinar el tipo de campo en un objeto. No sé el tipo de objeto cuando se me pasa, pero necesito encontrar campos que son long
s. Es bastante fácil distinguir el Long
s en caja, pero la primitiva long
parece más difícil.Verifique el tipo de campo primitivo
I puedo asegúrate de que los objetos que me pasan solo tienen Longs
, no las primitivas, pero prefiero no hacerlo. Así que lo que tengo es:
for (Field f : o.getClass().getDeclaredFields()) {
Class<?> clazz = f.getType();
if (clazz.equals(Long.class)) {
// found one -- I don't get here for primitive longs
}
}
Una manera hacky, que parece funcionar, es la siguiente:
for (Field f : o.getClass().getDeclaredFields()) {
Class<?> clazz = f.getType();
if (clazz.equals(Long.class) || clazz.getName().equals("long")) {
// found one
}
}
Realmente me gustaría una forma más limpia de hacer esto, si es que existe. Si no hay una mejor manera, entonces creo que requerir que los objetos que recibo solo usen Long
(no long
) sería una mejor API.
¿Alguna idea?
Sí Miré a eso, pero necesito saber si se trata de un largo primitiva no sólo si es un primitivo es decir, coincide con todas las primitivas largas, pero no con las entradas ni los bytes, etc. – macbutch
si es una primitiva, quiero establecer su valor predeterminado. –