【发布时间】:2012-05-08 04:37:51
【问题描述】:
我有这个类型的 DataRow:
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> {
...
}
【问题讨论】:
-
我假设
ManDataTable.appendRow()返回一个DataRow,你能给出它的代码吗? -
是的,这是标准的 org.jdesktop.dataset.DataTable(已编辑)
标签: java casting datarow strong-typing jdesktop