15
我是高級解決方案架構師,但是我最近偶然發現讓我停下來思考一個問題...在Java中比較對象和INT 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它編譯OK。
請問有什麼新功能保證這種行爲?
你的意思是它現在與'new Object()== null'等價,並且'new Object()== 2'仍然會觸發一個錯誤? –
它應該或多或少等同於new Object()== new Integer(0)'(或'New Integer(2)')。它不應該是一個錯誤,並且總是爲'false',因爲新的'Object'不能和Integer對象是同一個對象。 – ajb
@MartijnCourteaux不是。它相當於'new Object()== Integer.valueOf(0)'和'new Object()== Integer.valueOf(2)'。當然,兩者都會產生錯誤。 –