我正在使用可写列表来存储用户添加到应用程序的数据集数据。
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:无法执行可运行(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。等于(一个 plotDataModel.java:167)
我知道问题出在 Equals 方法中,但我不确定如何更改它,因此它将与可写列表一起使用。
编辑
我将问题追溯到这个
ArrayList<AplotDataModel.AplotDatasetData> tableData = new ArrayList<AplotDataModel.AplotDatasetData>(AplotDataModel.getInstance().getObservableList());
我正在尝试使用可写列表中的数据创建一个新的数组列表