Java,可以使用布尔值赋值布尔值,反之亦然?

时间:2012-04-09 02:12:30

标签: java reflection

当我运行此代码片段时,不会采取任何一方。

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();

我无法弄清楚布尔参数的正确测试。

2 个答案:

答案 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}}。