实际上这不是一个问题,因为我会马上提供答案,所以你不会陷入同样的事情:
我想检查(使用反射)如果一个Field
是一个原语或包装类之一。
我检查了使用cl.isPrimitive()
和比较,如c==Boolean.TYPE
,但根据我的调试器,boolean . type . tostring返回"布尔",而不是"布尔"。
Double.TYPE == double.class
将返回true
。Double.class != Double.TYPE
也将返回true
。
它们(double.class和Double.TYPE)在某种程度上表示相同的东西,不要问我为什么…
如果您想与Double
比较,请与Double.class
比较。
如果要与double
比较,请与double.class
或Double.TYPE
比较。
虽然我没有对所有的原语进行测试,但对于所有其他原语及其包装器应该是相同的。