2012-02-28 69 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))。