Ich versuche, den Typ eines Feldes auf einem Objekt zu bestimmen. Ich kenne den Typ des Objekts nicht, wenn es an mich übergeben wird, aber ich muss Felder finden, die long
s sind. Es ist einfach genug, um die Boxs zu unterscheiden, aber das primitive long
scheint schwieriger.Überprüfen Sie den Typ des primitiven Felds
I kann stellen Sie sicher, dass die Objekte an mich übergeben haben nur Longs
, nicht die Primitiven, aber ich würde lieber nicht. Also, was ich habe, ist:
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
}
}
A hacky Weise, die zu funktionieren scheint, ist dies:
for (Field f : o.getClass().getDeclaredFields()) {
Class<?> clazz = f.getType();
if (clazz.equals(Long.class) || clazz.getName().equals("long")) {
// found one
}
}
Ich würde wirklich wie ein sauberer Weg, dies zu tun, wenn es einen gibt. Wenn es keinen besseren Weg gibt, dann denke ich, dass die Verwendung der Objekte, die ich erhalte, nur Long
(nicht long
) zu verwenden, eine bessere API wäre.
Irgendwelche Ideen?
Ja ich an, dass aussah, aber ich wissen muss, wenn es eine lange primitiv ist nur nicht, ob es ist ein Primitiv. d. h., alle langen Primitive, aber keine Inte oder Bytes usw., müssen übereinstimmen. – macbutch
Wenn es sich um ein primitives Element handelt, möchte ich seinen Standardwert festlegen !!! –