Приводит в массив двухмерных объектов в Java - PullRequest
0 голосов
/ 02 ноября 2011

Я работаю над игрой в шашки в Java. Я представляю свою доску так:

Object[][] board = new Object[8][8];

Я хочу иметь возможность поместить объект Checker или значение null в массив двухмерных объектов.

У меня есть метод, который присваивает Checker объектам местоположения в массиве 2D-объектов.

Моя проблема в том, что когда я иду написать свой тест для метода:

    public void testPopulateCheckers() {
        assertEquals("Red", game.board[0][4].color)
    }

Метод color (который является методом для моего Checker class) не отображается. Я пытался привести его как Checker , но в нем перечислены только доступные методы Object .

Ответы [ 3 ]

5 голосов
/ 02 ноября 2011
// This should work
public void testPopulateCheckers() {
    assertEquals("Red", ((Checker) game.board[0][4]).color)
}

Однако, если все, что вы храните, это объекты Checker или null, измените ваше объявление на это, чтобы вам не приходилось приводить.

Checker[][] board = new Checker[8][8];
3 голосов
/ 02 ноября 2011

Вы должны использовать Checker, чтобы объявить свою матрицу, если вы собираетесь вызывать метод, подобный color () для нее.

Checker[][] board = new Checker[ 8 ][ 8 ];

и, конечно, убедитесь, что вы инициализировали все 64 Checkers, так как толькоплата инициализируется строкой выше.

2 голосов
/ 02 ноября 2011

Определите свою матрицу следующим образом.

Object[][] board = new Checker[8][8];

public void testPopulateCheckers() {
    assertEquals("Red", ((Checker) game.board[0][4]).color)
}

Вам нужно разыграть ее.

РЕДАКТИРОВАТЬ: метод добавлен!

...