我正在尝试确定对象上字段的类型。我不知道传递给我的对象的类型,但我需要找到long
s 的字段。区分盒装的 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
}
}
一种似乎可行的hacky方式是:
for (Field f : o.getClass().getDeclaredFields()) {
Class<?> clazz = f.getType();
if (clazz.equals(Long.class) || clazz.getName().equals("long")) {
// found one
}
}
如果有的话,我真的很想要一种更清洁的方法来做到这一点。如果没有更好的方法,那么我认为要求我收到的对象仅使用Long
(not long
) 将是一个更好的 API。
有任何想法吗?