2012-04-27 3 views
0

я это напечатал DataRow:ClassCastException org.jdesktop.DataSet.DataRow к TypedDataRow

import org.jdesktop.dataset.DataRow; 

public class MainDataRow extends DataRow { 
    private MainDataTable baseDataTable; 

    protected MainDataRow(MainDataTable dt) { 
    super(dt); 
    this.baseDataTable = dt; 
    } 

    public int getId()       { return (int) super.getValue(baseDataTable.getId()); }; 
    public void setId(int id)      {     super.setValue(baseDataTable.getColId(), id); }; 
    public int getDelta()      { return (int) super.getValue(baseDataTable.getColDelta()); }; 
    public void setDelta(int delta)    {     super.setValue(baseDataTable.getColDelta(), delta); }; 
    public String getNombre()      { return (String) super.getValue(baseDataTable.getColNombre()); }; 
    public void setNombre(String nombre)   {     super.setValue(baseDataTable.getColNombre(), nombre); }; 

MainDataTable хорошо сформирован и работает отлично. Теперь то, что я пытаюсь сделать, это добавить новую строку в MainDataTable:

MainDataTable dt = new MainDataTable(ds); 
MainDataRow dr = (MainDataRow) dt.appendRow(); 

Я получаю ClassCastException. В чем проблема? Благодарю.

Edit MainDataTable является типизированным DataTable, без переопределения на appendRow():

public class TypedDataTable<TypeOfRow> extends DataTable { 
... 
} 

public class MainDataTable extends TypedDataTable<MainDataRow> { 
... 
} 
+0

Я принимаю 'ManDataTable.appendRow()' возвращает 'DataRow', вы можете указать его код? – amit

+0

Да, это стандартный org.jdesktop.dataset.DataTable (отредактирован) – Miquel

+0

Ответ здесь http://stackoverflow.com/questions/10481515/casting-datarow-to-strongly-typed-datarow – Miquel

ответ

0

appendRow() возвращает объект DataRow, а не объект MainDataRow. Вот почему ваш бросок терпит неудачу. Так как MainDataRow расширяет DataRow, просто сделайте

И расширить функциональность оттуда.

+0

Это верно, только если * * динамический тип ** возвращаемого значения - 'DataRow', а не' MainDataRow'. – amit

+0

Просто попробовал, но тогда есть «Тип несоответствия: невозможно преобразовать из DataRow в MainDataRow» – Miquel

 Смежные вопросы

  • Нет связанных вопросов^_^