ユーザーがアプリケーションに追加するデータセットデータを保存するために書き込み可能リストを使用しています。
public class AplotDataModel {
IObservableList observableList = new WritableList();
private static AplotDataModel instance = null;
//////////////////////////////////////////////////////////////////////////
// Constructor //
//////////////////////////////////////////////////////////////////////////
private AplotDataModel() {
}// end Constructor
//////////////////////////////////////////////////////////////////////////
// SingletonSelectTable getInstance() //
//////////////////////////////////////////////////////////////////////////
public static AplotDataModel getInstance() {
if (instance == null) {
instance = new AplotDataModel();
}
return instance;
}
//////////////////////////////////////////////////////////////////////////
// add() //
//////////////////////////////////////////////////////////////////////////
public void add(TCComponentItemRevision tcRevision, TCComponentDataset selectedDataset) {
AplotDatasetData pp = new AplotDatasetData(tcRevision, selectedDataset);
if (!observableList.contains(pp)) {
observableList.add(pp);
}
}
//////////////////////////////////////////////////////////////////////////
// clearTableArray() //
//////////////////////////////////////////////////////////////////////////
public void clearTableArray() {
observableList.clear();
}
}// End Class
ADDメソッドでは、クラスを使用してデータをフォーマットし、書き込み可能なリストに追加しています。
AplotDatasetData pp = etc.....
クラス
public class AplotDatasetData {
TCComponentItemRevision rev;
TCComponentDataset componentdataset;
String markUp = "no";
//////////////////////////////////////////////////////////////////////////
// Constructor //
//////////////////////////////////////////////////////////////////////////
public AplotDatasetData(TCComponentItemRevision tcRevision, TCComponentDataset selectedDataset) {
rev = tcRevision;
componentdataset = selectedDataset;
}// end Constructor
//////////////////////
// getDataset() //
//////////////////////
public TCComponent getDataset() {
return componentdataset;
}
//////////////////
// getRev() //
//////////////////
public TCComponent getRev() {
return rev;
}
//////////////////
// equals() //
//////////////////
@Override
public boolean equals(Object o) {
AplotDatasetData p = (AplotDatasetData) o;
if (rev.equals(p.getRev()) && componentdataset.equals(p.getDataset())) {
return true;
}
else {
return false;
}
}// end equals()
私のコードはコンパイルされます-しかし、書き込み可能なリストを含む操作を実行します。次のエラーが発生します。
エラー:11:31:00,591-TcLogger $ IC_LogListener.logging :?org.eclipse.core.runtime --org.eclipse.ui --0-未処理のイベントループ例外org.eclipse.swt.SWTException:runnableの実行に失敗しました(java.lang.ClassCastExc eption:org.eclipse.core.databinding.observable。 list.WritableListをcom.lexmark.aplot.datamodels.AplotDataModel$AplotDatasetData)などにキャストすることはできません。
原因:java.lang.ClassCastException:org.eclipse.core.databinding.observable.list.WritableListをcom.lexmark.aplot.datamodels.AplotDatamodel$AplotDatasetDataのcom.lexmark.aplot.datamodels.AplotDataModel$AplotDatasetDataにキャストできません。 equals(A plotDataModel.java:167)
問題がEqualsメソッドにあることは知っていますが、変更方法がわからないため、書き込み可能なリストで機能します。
編集
私はこれに問題をたどりました
ArrayList<AplotDataModel.AplotDatasetData> tableData = new ArrayList<AplotDataModel.AplotDatasetData>(AplotDataModel.getInstance().getObservableList());
書き込み可能リストのデータを使用して新しい配列リストを作成しようとしています