Проблема с 2D-массивом и Java Enums - PullRequest
0 голосов
/ 01 мая 2020

Я новичок в перечислениях с полями-членами и конструкторами, и я не могу понять, почему я получаю эту синтаксическую ошибку (прокомментированную на месте) (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;
}

}

1 Ответ

1 голос
/ 01 мая 2020

Ваш синтаксис немного отключен. Вы можете использовать этот синтаксис только для инициализации массива во время объявления массива. Здесь вы не объявляете новую переменную массива, поэтому вы не можете опустить тип массива. Вам нужно что-то вроде

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