我遇到了一個奇怪的錯誤,我認爲這是一個錯誤。 這裏是一個最小的情況下,請不要對代碼的有效性發表意見:)javac奇怪的語法 - 錯誤表達式的非法開始
class Foo {
static public <X> int bar() { return 42; }
public int baz() {
return true ? 42 : (
Foo.<Void>bar() > 42 ? 41 : 43
)
;
}
}
結果:
err.java:7: illegal start of expression
Foo.<Void>bar() > 42 ? 41 : 43
^
我已經試過SUN SDK的javac 1.6.0_13和1.6.0_21。
的錯誤消失,當我要麼
- 化妝棒()非通用(只是出於好奇,而不是一個真正的選擇)
- 刪除線各地三元表達括號7
因此,看起來如果e是一個表達式,那麼編寫(e)並不總是有效的?
感謝Joachim。這就是我擔心的(目前我被標準的SDK javac 1.6所困住)。將不得不在Sun/Oracle上搜索bug數據庫,以確定它是否已修復。 – Ingo 2011-03-23 12:01:21
該bug已經有3年了,但顯然不會在jdk 1.6中修復。但是,它在jdk 1.7 beta 14中得到了修復(開發者預覽版是b189,所以它在那裏修復)。 – Ingo 2011-03-30 16:37:47
@Ingo:小心添加一個鏈接到你發現的錯誤? – 2011-04-08 14:18:05