javac奇怪的语法 - 错误非法启动表达式

Ing*_*ngo 9 java javac

我遇到了一个奇怪的错误,我认为这是一个错误.这是一个小例,请不要评论代码的用处:)

class Foo {

    static public <X> int bar() { return 42; }

    public int baz() {
        return true ? 42 : (
            Foo.<Void>bar() > 42 ? 41 : 43
        )
        ;
    }
}
Run Code Online (Sandbox Code Playgroud)

结果:

err.java:7: illegal start of expression
        Foo.<Void>bar() > 42 ? 41 : 43
            ^
Run Code Online (Sandbox Code Playgroud)

我试过SUN SDK javac 1.6.0_13和1.6.0_21.
当我要么,错误消失了

  • 使bar()非通用(只是为了好奇,不是真正的选择)
  • 删除第7行三元表达式周围的括号

所以看起来如果e是一个表达式,那么写(e)并不总是有效的?

Joa*_*uer 6

发布的代码使用Eclipse编译(并运行)对我很好,但我可以确认javac无法编译它.我怀疑你发现了编译器错误javac.

报告它可能是个好主意.

  • 错误链接:http://bugs.sun.com/bugdatabase/view_bug.do?bad_id = 6481655和http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6608961 (3认同)