我是成员字段和构造函数枚举的新手,而且我不知道为什么会出现此语法错误(注释为现场)(Eclipse)。当我将有问题的数据类型更改为2D数组以外的任何其他内容时,错误消失了。
public enum KeyboardType {
ALPHABETICAL_CHARACTERS (
{
{'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p'},
{'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', ' '},
{'z', 'x', 'c', 'v', 'b', 'n', 'm', ' ', ' ', ' '}
}
); //Syntax error, insert "Identifier" to complete EnumConstant
private final char[][] layout;
KeyboardType(char[][] layout) {
this.layout = layout;
}
public char[][] getLayout(){
return layout;
}
}
您的语法有些偏离。您只能使用该语法在数组声明时初始化数组。在这里,您没有声明新的数组变量,因此您不能忽略数组类型。您需要类似的东西,
ALPHABETICAL_CHARACTERS(new char[][] {
{ 'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p' },
{ 'a', 's', 'd', 'f', 'g', 'h', 'j', 'k', 'l', ' ' },
{ 'z', 'x', 'c', 'v', 'b', 'n', 'm', ' ', ' ', ' ' } });