我正在尝试确定对象上字段的类型。我不知道传递给我的对象的类型,但我需要找到以下字段long
s。盒装的很容易区分Long
但原始的long
似乎更难。
I can确保传递给我的对象只有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。
有任何想法吗?
您使用了错误的常量来检查 Long 原语 - 使用Long.TYPE
,每个其他原始类型都可以在包装器上使用类似命名的常量找到。例如:Byte.TYPE
, Character.TYPE
, etc.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)