Как инициализировать массив перечислителей, используя int вместо Enumerator.value - PullRequest
1 голос
/ 17 октября 2019

У меня есть перечислитель

public enum Tile{
    Empty(0),
    Occupied(1);
}

Я хочу создать двумерный массив, используя int вместо Tile.Empty или Tile.Occuppied

var shape = new Tile[][]{
            {0, 0, 1},
            {1, 1, 1}, 
     };

Возможно ли этосделать это в JAVA?

1 Ответ

1 голос
/ 17 октября 2019

Вы не можете инициализировать массив int с ключевым словом var.

Однако вы можете ссылаться на него со строгой ссылкой типа, например: int[][] shape = {{1,2},{3,4}};.

Вы такжене может заполнить массив типа Tile элементами, которые не являются Tile, например int s.

То, что вы можете сделать, это либо инициализировать:

  • массив int литералов
  • массив Tile литералов
  • anмассив int s, чьи литеральные значения извлекаются из нужных элементов Tile через метод получения в определении класса Tile, или
  • массив Tile s, экземпляры которого построены из int литерал - для этого вы можете реализовать статический метод в классе Tile, который принимает параметр int и возвращает соответствующий Tile или жалуется, если не найден (например, выдает какое-то исключение)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...