Ich habe die Methode, die Field
und Object
Wie zu verstehen, dass Feld Nummer ist?
public String format(Field field, Object o) {....}
ich gegossen werden kann, um Nummer will wissen, ob Feld akzeptiert.
Ich habe bemerkt, dass, wenn so etwas schreiben (für lange primitive):
field.getType().isAssignableFrom(long.class)
kehrt true
aber
field.getType().isAssignableFrom(Long.class)
kehrt false
und
field.getType().isAssignableFrom(Number.class)
kehrt false
zu
Auch
field.getType().cast(Number.class)
kehrt ClassCastException
Bitte helfen Methode zu schreiben, die true
wenn Feld tatsächlich Nummer zurück (int
, long
, byte
..., auch alle Wrapper) und false
in anderen Fällen.
Gibt es einfachere Weise als:
public String format(Field field, Object o) {
field.setAccessible(true);
Object value = null;
try {
value = field.get(o);
if (value instanceof Number) {
return field.get(o).toString();
}
} catch (IllegalAccessException e) {
....
}
...
}
?
versuchen, wenn (Anzahl. class.isAssignableFrom (field.getType())). Und lesen Sie die Java-Dokumentation für weitere Details zu dieser Methode. – zombie
@zombie diese Antwort existiert bereits und es ist falsch – gstackoverflow