Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Странная ошибка 
:(
    Опции темы
Proger89
Дата 21.8.2010, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 13.12.2007

Репутация: нет
Всего: нет



Доброго времени суток.
Мне нужно было написать неболшой класс параметризированного двумерного массива, но компилятор указывает на странную ошибку.
Вот код класса:
Код

package tasks;

import java.util.ArrayList;

public class Board<T> {
    private int _rowNum;
    private int _colNum;

    private ArrayList<ArrayList<T>> _rows = new ArrayList<ArrayList<T>>();

    public Board(int rows, int cols, T initValue) {
        for (int r = 0; r < rows; r++) {
            ArrayList<T> newCol = new ArrayList<T>();

            for (int c = 0; c < cols; c++)
                newCol.add(initValue);

            _rows.add(newCol);
        }
    }

    public Board(Board initBoard) {
        this(initBoard.getRowNum(), initBoard.getRowNum(), initBoard.getValue(1, 1));

        for (int r = 1; r <= initBoard.getRowNum(); r++)
            for (int c = 1; c <= initBoard.getColNum(); c++)
                setValue(r, c, initBoard.getValue(r, c));
    }

    public void setValue(int rowNum, int colNum, T newVal) {
        int realRowNum = rowNum - 1;
        int realColNum = colNum - 1;

        _rows.get(realRowNum).set(realColNum, newVal);
    }

    public T getValue(int rowNum, int colNum) {
        int realRowNum = rowNum - 1;
        int realColNum = colNum - 1;

        return _rows.get(realRowNum).get(realColNum);
    }

    public int getRowNum() {
        return _rowNum;
    }

    public int getColNum() {
        return _colNum;
    }



}



Компилятор ругается на строку:
Код

    this(initBoard.getRowNum(), initBoard.getRowNum(), initBoard.getValue(1, 1));

с ошибкой:
Код

/home/proger/Documents/Programming/AI/Book/Chpt3/Searches/src/tasks/Board.java:36: cannot find symbol
symbol  : constructor Board(int,int,java.lang.Object)
location: class tasks.Board<T>
        this(initBoard.getRowNum(), initBoard.getRowNum(), initBoard.getValue(1, 1));


и на строку:
Код

    setValue(r, c, initBoard.getValue(r, c));


c ошибкой:
Код

/home/proger/Documents/Programming/AI/Book/Chpt3/Searches/src/tasks/Board.java:40: setValue(int,int,T) in tasks.Board<T> cannot be applied to (int,int,java.lang.Object)
                setValue(r, c, initBoard.getValue(r, c));
Note: /home/proger/Documents/Programming/AI/Book/Chpt3/Searches/src/searches/Main.java uses unchecked or unsafe operations.


Почему так происходит? Ведь метод getValue возвращат T, a не Object.

Заранее благодарен.
PM   Вверх
mstalker26
Дата 21.8.2010, 18:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 206
Регистрация: 4.7.2009

Репутация: 4
Всего: 11



У тебя не только ошибки выдает, но и предупреждение в 22 строке
Код

Board is a raw type. References to generic type Board<T> should be parameterized.


Смотрим где предупреждение и точно. Класс у нас Board<T>, а конструктор public Board(Board initBoard). Ругаемся на свою невнимательность и пишем
Код

public Board(Board<T> initBoard)

О чудо, ошибки тоже исчезли  smile 

Мораль: предупреждения не менее важны чем ошибки.
--------------------
Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0611 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.