Я пытаюсь определить тип поля для объекта. Я не знаю тип объекта, когда он передается мне, но мне нужно найти поля, которые являются long
s. Достаточно просто выделить коробку long
, но примитив long
кажется более сложным.
Я могу убедиться, что объекты, переданные мне, имеют только Longs
, а не примитивы, но я бы предпочел. Итак, у меня есть:
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
}
}
Похоже, что это взломанный способ:
for (Field f : o.getClass().getDeclaredFields()) {
Class<?> clazz = f.getType();
if (clazz.equals(Long.class) || clazz.getName().equals("long")) {
// found one
}
}
Мне бы очень понравился более чистый способ сделать это, если он есть. Если нет лучшего способа, то я думаю, что требовать, чтобы объекты, которые я получаю, использовали только long
(не long
), были бы лучшим API.
Любые идеи?