СlassCastException - откуда?

User avatar
Sabina
Уже с Приветом
Posts: 5669
Joined: 13 Oct 2000 09:01
Location: East Bay, CA

СlassCastException - откуда?

Post by Sabina »

При заполнении Table Data вдруг выскочило СlassCastException на вобщем-то отлаженном коде.
Чисто теоретически не должно оно там появляться.
Сами посудите:

Code: Select all

public class AuditUserTableData extends TableData {
private static String[] tblHeaders = new String[] {
    "objectID", "name", "type", "level", "fullFieldName",  "oldValue", "newValue", "workOrderNum", "updatedDate"};

private ArrayList lst;
private AuditUserData userData;
private Date checkDate;

  public AuditUserTableData() {
    this.headers = tblHeaders;
        initFields();
  }
...


и потом сюда передается ArrayList lst через метод

Code: Select all

  public void setProjectColl(ArrayList l) {
  lst = l;
  }


И идет заполнение table data данными:

Code: Select all

public void setTable( ) {

     if (lst != null) {
       for(int i=0; i < lst.size(); i++){
         userData = (AuditUserData)lst.get(i);
         .....


Вот в этом самом месте userData = (AuditUserData)lst.get(i) - каст эксепшн.

Откуда? lst полностью соответствует бину AuditUserData. Если каст убрать, Билдер сам ругается что нужен тип AuditUserData. Импорты все на месте...
:pain1:

Для двух других бинов этот код работает без проблем.

Сабина
User avatar
hooch
Уже с Приветом
Posts: 1169
Joined: 16 Jan 2003 23:23

Post by hooch »

From your code samples it's not clear how you fill your ArrayList. Looks like ArrayList does not contain AuditUserData.. or its sublasses.
User avatar
Sabina
Уже с Приветом
Posts: 5669
Joined: 13 Oct 2000 09:01
Location: East Bay, CA

Post by Sabina »

hooch wrote:From your code samples it's not clear how you fill your ArrayList.


Code: Select all

audUserData = ReportUtils.getAuditUserData(userID);
- возвращает ArrayList. если не поверите на слово, могу и весь метод привести.
причем все значения полностью соотвествуют бину AuditUserData (тип, последовательность аттрибутов и проч.)
.......

Code: Select all

audUserTableData = new AuditUserTableData();
audUserTableData.setProjectColl(audUserData);
audUserTableData.setTable();
- последняя строка - тот самый метод где валится..

Сабина
User avatar
janya
Удалён за грубость
Posts: 5433
Joined: 22 Jan 2003 21:38
Location: San Diego, CA

Post by janya »

Можно не гадать, а посмотреть:

Code: Select all

userData = (AuditUserData)lst.get(i); 

заменить на

Code: Select all

 
   Object o = lst.get(i);
   System.out.println(o.getClass().getName());
   userData = (AuditUserData)o;


Не обязательно распечатывать, если есть debugger, то можно там остановиться и посмотреть.
User avatar
Sabina
Уже с Приветом
Posts: 5669
Joined: 13 Oct 2000 09:01
Location: East Bay, CA

Post by Sabina »

janya wrote:Можно не гадать, а посмотреть:


:oops: Ваша правда:

Code: Select all

DEBUG: Init: org.jfree.report.modules.misc.referencedoc.ReferenceDocModule          [ext-parser-reference-doc]
AND THE OBJECT IS com.webnettrak.common.reports.AuditProjectData
Exception occurred during event dispatching:
java.lang.ClassCastException


Спасибо, нашелся "мелький очепятка", теперь можно продолжать ...

Сабина
Last edited by Sabina on 16 Jan 2004 00:59, edited 1 time in total.
User avatar
hooch
Уже с Приветом
Posts: 1169
Joined: 16 Jan 2003 23:23

Post by hooch »

Can you post full exception details?
User avatar
hooch
Уже с Приветом
Posts: 1169
Joined: 16 Jan 2003 23:23

Post by hooch »

I would also recommend to put debug message into your loop to see what type of object you are fetching from ArrayList.
User avatar
Sabina
Уже с Приветом
Posts: 5669
Joined: 13 Oct 2000 09:01
Location: East Bay, CA

Post by Sabina »

hooch wrote:Can you post full exception details?


Ой, уже нет ... Неохота обратно исправлять.

Сабина

Return to “Вопросы и новости IT”