2012-02-28 82 views
1

這似乎是一個愚蠢的問題,因爲Java那樣短路,但我記得怎麼Android不很使用Java在同樣的意義,因爲我承擔,所以說,在該位的代碼,我寫道:Android支持短路嗎?

... code omitted ... 
else if (mimeType.equals("application/x-tar") 
    || mimeType.equals("application/x-rar-compressed") 
    || mimeType.equals("application/stuffit") 
    || mimeType.equals("application/zip") 
    || mimeType.equals("application/x-gzip")) 

...在不太常見的東西(tarballs/gzip)之前放置更常見的東西(zip/rar)會更好嗎?

事實上,我無法在SO上找到類似的問題,可能會給我這個答案,但比抱歉更安全。

回答

4

短路由||支持。

如果您試圖優化這種情況,您應該嘗試將每個值都放在一個靜態的Set中,然後檢查是否typeSet.contains(mimeType)

1

是的,||(條件或運算符)是一個短路運算符。引述Java Language Specification

||操作就像|§15.22.2),但評估其右邊的操作數只有在其左側操作數的值是假的。它在語法上是左結合的(它從左到右)。它在副作用和結果價值方面完全聯合;也就是說,對於任何表達式a,b和c,對錶達式((a)||(b))||(c)的評估產生相同的結果,相同的副作用以相同的順序發生,如評估(a)||((b)||(c))。