有人可以解釋爲什麼這個代碼?java三元運算符
Collection c = (5 == 5) ? new ArrayList() : new HashSet();
產生以下編譯器錯誤:
Incompatible conditional operand types ArrayList and HashSet
對於我不明白,下面的解決了這個問題
Collection c = (5 == 5) ? (Collection) new ArrayList() : new HashSet();
我使用Java 1.4的原因。
請注意,第一次在Java 1.5及更高版本上編譯。 – BalusC 2010-07-05 17:34:52
在運行Sun的JDK 1.6.0_16版本的機器上工作正常 – MAK 2010-07-05 17:36:13
關閉點,但值得一問 - 看起來像「5 == 5」似乎對除了我之外的其他任何人都不陌生。據我所知,'c'總是會評估爲'new ArrayList()'。任何人都可以解釋爲什麼它可能是有用的做'集合c =(5 == 5)? new ArrayList():new HashSet();'而不是簡單地執行'Collection c = new ArrayList();'考慮到'(5 == 5)'總是計算爲'true'? – 2015-01-03 14:16:46