簡體   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