【发布时间】:2009-12-11 23:43:48
【问题描述】:
我正在尝试确定对象上字段的类型。我不知道传递给我的对象的类型,但我需要找到longs 的字段。区分盒装的Longs 很容易,但基本的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(而不是long)会是一个更好的API。
有什么想法吗?
【问题讨论】:
标签: java reflection primitive