繁体   English   中英

boolean.isInstance(true)是false?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM