二维数组和 Java 枚举问题

Issue with 2D array and Java Enums

我不熟悉具有成员字段和构造函数的枚举,我不明白为什么会出现此语法错误(当场评论)(Eclipse)。当我将相关数据类型更改为二维数组以外的任何数据类型时,错误消失。

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', ' ', ' ', ' ' } });