powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Модель таблицы и ArrayList <Object>
11 сообщений из 11, страница 1 из 1
Модель таблицы и ArrayList <Object>
    #34018828
fplab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Народ, кто объяснит, как победить сообщение об ошибке приведения в следующем коде:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
     class  UsersTableModel  extends  AbstractTableModel {
         private  ArrayList <String> columnNames =  new  ArrayList <String> ();
         private  ArrayList <String> columnTypes =  new  ArrayList <String> ();
         private  ArrayList <Object>        data =  new  ArrayList <Object> ();

         public   int  getRowCount () {
             synchronized  (data) {
                 return  data.size ();
            }
        }

         public   int  getColumnCount () {
             return  columnNames.size ();
        }

         public  Object getValueAt ( int  row,  int  column) {
             synchronized  (data) {
                 return  ((ArrayList)data.get (row)).get (column);
            }
        }

         public   void  setValueAt (Object value,  int  row,  int  column) {
             synchronized  (data) {
                ((ArrayList)data.get (row)).set (column, value);    // Ругается на это
            }
        }
    }
Пишет: "unchecked call to set (int,E) as a member of the raw type java.util.ArrayList".
Уже ум за разум зашел. В принципе, все компилируется, но хотелось бы понять, где собака зарыта :(
Спасибо !!!
...
Рейтинг: 0 / 0
Модель таблицы и ArrayList <Object>
    #34019128
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вы можете объяснить, что в этой строке происходит?
Код: plaintext
1.
((ArrayList)data.get (row)).set (column, value);    
Может по честному сделать?
Код: plaintext
1.
2.
3.
4.
5.
6.
  Object elem = data.get(row);
  ArrayList temp;
   if  (elem  instanceof  ArrayList) {
   temp = (ArrayList)elem;
   ArrayList.set(column,value);
  }

И еще. Не пробовал, но кажется
Код: plaintext
1.
 private  ArrayList <Object>        data =  new  ArrayList <Object> ();
масло масляное.

И возможно, надо:
Код: plaintext
1.
 if  (elem  instanceof  ArrayList<Object>) {
...
Рейтинг: 0 / 0
Модель таблицы и ArrayList <Object>
    #34019144
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И в догонку.
Код: plaintext
1.
 private  ArrayList <List> data =  new  ArrayList <List> ();
Правда, я с generics еще толком не разбирался. Поэтому тут наверняка какой-нибудь нюанс есть.
...
Рейтинг: 0 / 0
Модель таблицы и ArrayList <Object>
    #34019256
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
 private  List <List<Object>> data =  new  ArrayList <List<Object>> ();
//...
 public   void  setValueAt (Object value,  int  row,  int  column) {
         synchronized  (data) {
            data.get(row).set(column, value);
    }
}
должно быть так. нету 1.5, проверить не могу.
...
Рейтинг: 0 / 0
Модель таблицы и ArrayList <Object>
    #34027022
ArmenA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Должно быть типа

public ArrayList getRow(int row) {

return (ArrayList) data.get(row);
}
/**
* Updates the specified row. It replaces the row ArrayList at the specified
* row with the new ArrayList.
*
* @param updatedRowArrayList row data
* @param rowrow row number
*/
public void updateRow(ArrayList updatedRow, int row) {
data.set(row, updatedRow);
super.fireTableDataChanged();
}
/**
* Clears the table data.
*/
public void clearTable() {
data = new ArrayList();
super.fireTableDataChanged();

}
}
...
Рейтинг: 0 / 0
Модель таблицы и ArrayList <Object>
    #34028011
а может
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а может проще сделать не ArrayList <Object> а ArrayList <Object[]> .и все проблемы исчезнут и работать с ArrayList <Object[]> станет легче
...
Рейтинг: 0 / 0
Модель таблицы и ArrayList <Object>
    #34028861
NotGonnaGetUs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ххх
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
 private  List <List<Object>> data =  new  ArrayList <List<Object>> ();
//...
 public   void  setValueAt (Object value,  int  row,  int  column) {
         synchronized  (data) {
            data.get(row).set(column, value);
    }
}



Т.к. доступ к data осуществляется по индексам, то лучше явно определить, что лист поддерживает доступ по индексу за o(1).
Т.е. должно быть примерно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
 private  ArrayList <ArrayList> data =  new  ArrayList <ArrayList> ();
//...
 public   void  setValueAt (Object value,  int  row,  int  column) {
     synchronized  (data) {
         data.get(row).set(column, value);
    }
}
...
Рейтинг: 0 / 0
Модель таблицы и ArrayList <Object>
    #34028952
Фотография Timm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NotGonnaGetUs ххх
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
 private  List <List<Object>> data =  new  ArrayList <List<Object>> ();
//...
 public   void  setValueAt (Object value,  int  row,  int  column) {
         synchronized  (data) {
            data.get(row).set(column, value);
    }
}



Т.к. доступ к data осуществляется по индексам, то лучше явно определить, что лист поддерживает доступ по индексу за o(1).
Т.е. должно быть примерно так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
 private  ArrayList <ArrayList> data =  new  ArrayList <ArrayList> ();
//...
 public   void  setValueAt (Object value,  int  row,  int  column) {
     synchronized  (data) {
         data.get(row).set(column, value);
    }
}

По-моему здесь это не принципиально.
...
Рейтинг: 0 / 0
Модель таблицы и ArrayList <Object>
    #34029905
NotGonnaGetUs
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TimmПо-моему здесь это не принципиально.
Выбор между двумя _работающими_ вариантами кода базируется на основе каких-то общих идей - принципов, т.е. он принципиален по определению :)
...
Рейтинг: 0 / 0
Модель таблицы и ArrayList <Object>
    #34030679
fplab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все здорово, но такой код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
 private  ArrayList <ArrayList> data =  new  ArrayList <ArrayList> ();
//...
 public   void  setValueAt (Object value,  int  row,  int  column) {
     synchronized  (data) {
         data.get(row).set(column, value);
    }
}
выдает все то же предупреждение:
unchecked call to set(int,E) as a member of the raw type java.util.ArrayList.
Как таки эту бяку победить ?
...
Рейтинг: 0 / 0
Модель таблицы и ArrayList <Object>
    #34030696
fplab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В догонку. А вот такой код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
         private  ArrayList <ArrayList<Object>> data =  new  ArrayList <ArrayList<Object>> ();

         public   void  setValueAt (Object value,  int  row,  int  column) {
             synchronized  (data) {
                data.get (row).set (column, value);
            }
        }
компилируется без ругани на ошибки приведения.
Нет, конечно, generics это классно. Только что делать, если надо перетащить приложение с кучей JTable написанное под Java 1.4 на Java 1.5 ? Можно, конечно, наплевать: warning не error, но хочется, чтобы было красиво :)
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Модель таблицы и ArrayList <Object>
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]