实际上这不是一个问题,因为我会立即提供答案,所以你不要为同一件事而堕落:
我想检查(使用反射)Field
是一个原语还是其中一个包装类。
我使用cl.isPrimitive()
和c==Boolean.TYPE
之类的比较进行了检查,但根据我的调试器,Boolean.TYPE.toString返回“boolean”,而不是“Boolean”。
答案 0 :(得分:1)
Double.TYPE == double.class
将返回true
Double.class != Double.TYPE
也会返回true
。
他们(double.class和Double.TYPE)不知何故代表同样的事情,不要问我为什么......
如果您想与Double
进行比较,请与Double.class
进行比较
如果您想与double
进行比较,请与double.class
或Double.TYPE
进行比较。
虽然我没有用所有原语测试它,但对于所有其他原语及其包装器应该是相同的。
我希望这至少可以节省一些人写这篇文章的时间。