0

私はこのタイプの 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 が発生しています。問題はどこだ?ありがとう。

編集MainDataTable は型指定された DataTable で、appendRow() をオーバーライドしません。

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

public class MainDataTable extends TypedDataTable<MainDataRow> {
...
}
4

1 に答える 1

0

appendRow() は、MainDataRow オブジェクトではなく、DataRow オブジェクトを返します。これが、キャストが失敗する理由です。MainDataRow は DataRow を拡張するため、次のようにします。

MainDataRow dr = dt.appendRow();

そこから機能を拡張します。

于 2012-04-27T12:25:14.047 に答える