我遇到了一个奇怪的错误,我认为这是一个错误。 这里是一个最小的情况下,请不要对代码的有效性发表意见:)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