簡體   English   中英

在Java 7中比較Object和int

[英]Comparing Object and int in Java 7

我最近偶然發現了一個讓我停下來思考的問題......

對我來說,下面的代碼總是應該觸發錯誤,但當我的一位同事問我為什么Eclipse沒有顯示錯誤時,我無法回答任何問題。

class A {
    public static void main(String... args) {
        System.out.println(new Object() == 0);
    }
}

我已經調查過,發現在源級別為1.6時確實會拋出一個錯誤:

incomparable types: Object and int

但現在在1.7中編譯好了。

請問,有哪些新功能可以保證這種行為?

你是什​​么意思“什么新功能可以保證這種行為?” 1.7正在解決1.6中存在的問題。 new Object() == 0應該從未產生錯誤,並且始終導致自動裝箱觸發。

根本沒有理由

Object a= 5 ;

是正確的,而不是表達

a == 3

甚至

a == 5

這是非常奇怪的,恕我直言,與語言規范本身相矛盾。

但是,從動態的角度來看, a == 5仍然評估為false(Integer)a == 5或者甚至(int)a == 5評估為true 原因是autounboxing被設計為永遠不會產生ClassCastException ,因此只能靜態地發生包裝類型。 后兩種情況是顯式強制轉換,因此通常允許使用ClassCastException

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM