检查基元字段的类型
2022-08-31 17:42:45
我正在尝试确定对象上字段的类型。我不知道对象在传递给我时的类型,但我需要找到s的字段。区分盒装的s很容易,但基元似乎更困难。long
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
}
}
如果有一种更干净的方式,我真的想要一种更干净的方式来做到这一点。如果没有更好的方法,那么我认为要求我收到的对象只使用(而不是)将是一个更好的API。Long
long
有什么想法吗?