在我們的一些公司的項目代碼,我經常看這樣的事情:使用Boolean.FALSE/.TRUE初始化布爾值 - 爲什麼?
boolean foo = Boolean.FALSE;
除了這個事實,據我所知我只有在所有(如Pascal沒有隨機值)來初始化在Java中的局部變量和除事實上,特別是對於我經常想要初始化的布爾值來說,我在這裏錯過了什麼?爲什麼不:
boolean foo = false;
我不明白。像PMD和Findbugs這樣的代碼分析工具也會標記它。但爲什麼?
編輯: 沒有真正瞭解字節碼,除了在那裏我創建了一個示例類並反編譯它。該Boolean.FALSE去:
0: getstatiC#15 // Field java/lang/Boolean.FALSE:Ljava/lang/Boolean;
3: invokevirtual #21 // Method java/lang/Boolean.booleanValue:()Z
6: istore_1
的「假」變去:
0: iconst_1
1: istore_1
所以不知道太多關於這一點,我想這條語句,意味着有更多的時間來執行這樣這不僅是錯誤的,而且從長遠來看也會變慢。
教條主義,我想。 –
第一個只是錯誤的用法。儘管你可能會認爲任何可能使代碼更加冗長的風格幾乎都是Java慣用的**。 –
這可能是爲了確保如果布爾(後端)有變化,這將確保代碼始終工作..?它看起來很奇怪。 – OmniOwl