[英]boolean.isInstance(true) is false?
问题
布尔字段的类对象不会将其他布尔值识别为实例。
码
public class Test {
public boolean b;
public static void main(String[] args) {
System.out.println(Test.class.getFields()[0].getType().isInstance(true));
}
}
结果
false
方法是isInstance(Object)所以
x.isInstance(true)
是相同的
x.isInstance(Boolean.TRUE);
和Boolean.class不是boolean.class的子类。
注意:基元没有getClass()
方法或任何方法。 当您可以将它用作对象时,它已被装箱。
来自Class#isInstance(Object obj)
文档
...如果此Class对象表示基本类型,则此方法返回false。
请注意,期望的参数始终是Object
,这意味着它将始终是某个类的实例(不包括基本类型)。
即使你在这里传递原始类型,它也会被自动装箱到它的包装类,但是这样的包装类与由Class
表示的基本类型不同,在你的情况下由getType()
返回。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.