varargs非常奇怪的编译错误

时间:2013-11-11 01:47:00

标签: java enums compiler-errors

我正在为JVM中的所有操作码编写一个枚举。它不完整,到目前为止看起来像这样:

public enum Opcode {
    NOP(),
    ACONST_NULL(),
    ICONST_M1(),
    ICONST_0(),
    ICONST_1(),
    // a zillion more of these
    JSR_W();

    private Opcode(Class<? extends Argument> args...) {
    }
}

构造声明的行上有一个编译错误:

  

')'预期

发生了什么事?

1 个答案:

答案 0 :(得分:10)

...表示法的参数类型不在参数名称上,如此

private Opcode(Class<? extends Argument>... args) {
}

为了彻底性,方法的参数列表具有以下形式的Java Language Specification states

FormalParameterList:
    LastFormalParameter
    FormalParameters , LastFormalParameter

其中LastFormatParameter的格式为

LastFormalParameter:
    VariableModifiersopt Type... VariableDeclaratorId
    FormalParameter

...位于参数类型声明之后。