当我运行此代码片段时,不会采取任何一方。
if (Boolean.class.isAssignableFrom(boolean.class)) {
uLog.error("Boolean is => boolean");
}
if (boolean.class.isAssignableFrom(Boolean.class)) {
uLog.error("boolean is <= Boolean");
}
具体来说,我正在尝试使用反射测试参数类型:
Type[] pType = m.getGenericParameterTypes();
我无法弄清楚布尔参数的正确测试。
答案 0 :(得分:5)
Boolean
(对象)和boolean
(基元)无法相互转换/分配。但是,从Java 1.5开始,编译器会自动在两者之间进行box / unbox。
当你这样做时:
boolean b =
Boolean bb = b;
b = bb;
Java编译器自动将其转换为:
boolean b=
Boolean bb = Boolean.valueOf(b);
b = bb.booleanValue();
答案 1 :(得分:1)
内置boolean
的类型由Boolean.TYPE
表示。由于boolean
无法继承,因此您不需要isAssignableFrom
:您只需检查相关类型是否与Boolean.TYPE
相等,以查看参数的类型是否内置{{1} 1}}。