2012-04-27 70 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異常。哪裏有問題?謝謝。

編輯 MainDataTable是類型化的DataTable與appendRow()沒有壓倒一切:

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

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

我假設'ManDataTable.appendRow()'返回一個'DataRow',你能給它的代碼嗎? – amit 2012-04-27 12:24:39

+0

是的,這是標準的org.jdesktop.dataset.DataTable(編輯) – Miquel 2012-04-27 12:43:10

+0

答案在這裏http://stackoverflow.com/questions/10481515/casting-datarow-to-strongly-typed-datarow – Miquel 2012-06-04 09:58:00

回答

0

appendRow()返回一個DataRow對象,而不是一個對象MainDataRow。這就是你演員陣容失敗的原因。由於MainDataRow擴展了DataRow,只需做

MainDataRow dr = dt.appendRow(); 

並從那裏擴展功能。

+0

只有在* *返回值的動態類型**是'DataRow',而不是'MainDataRow'。 – amit 2012-04-27 12:26:08

+0

剛剛嘗試,但隨後出現「類型不匹配:無法從DataRow轉換爲MainDataRow」 – Miquel 2012-04-27 12:43:50

相關問題