我正在从另一个类的ArrayList创建一个新的ArrayList。
ArrayList<AplotDataModel.AplotDatasetData> tableData = AplotDataModel.getInstance().getArrayData();
我已经将其他类中的arraylist更改为IOservableList。 所以我希望它更简单到改变方法来获取ObservableList而不是ArrayList
ArrayList<AplotDataModel.AplotDatasetData> tableData = AplotDataModel.getInstance().getObservableList();
我收到以下错误:
类型不匹配:无法从IObservableList转换为ArrayList
修改 的 AplotDatasetData是AplotDataModel的子类。
public class AplotDatasetData {
TCComponentItemRevision rev;
TCComponentDataset componentdataset;
String prlValue;
String datasetName;
String markUp = "No";
//////////////////////////////////////////////////////////////////////////
// Constructor //
//////////////////////////////////////////////////////////////////////////
public AplotDatasetData(TCComponentItemRevision tcRevision, TCComponentDataset selectedDataset) {
rev = tcRevision;
componentdataset = selectedDataset;
}// end Constructor
///////////////////////////////////////////////////////////////////////////
// getDataset() //
///////////////////////////////////////////////////////////////////////////
public TCComponent getDataset() {
return componentdataset;
}// end getDataset()
///////////////////////////////////////////////////////////////////////////
// getRev() //
///////////////////////////////////////////////////////////////////////////
public TCComponent getRev() {
return rev;
}// end getRev()
///////////////////////////////////////////////////////////////////////////
// getPRLValue() //
///////////////////////////////////////////////////////////////////////////
public String getPRLValue() {
try {
prlValue = rev.getRelatedComponent("IMAN_master_form_rev").getStringProperty("PRL");
}
catch (TCException e) {
e.printStackTrace();
}
return prlValue;
}// end getPRLValue()
///////////////////////////////////////////////////////////////////////////
// getDatasetName() //
///////////////////////////////////////////////////////////////////////////
public String getDatasetName() {
try {
datasetName = componentdataset.getStringProperty("object_string");
}
catch (TCException e) {
e.printStackTrace();
}
return datasetName;
}// end getDatasetName()
///////////////////////////////////////////////////////////////////////////
// getECMarkupValue() //
///////////////////////////////////////////////////////////////////////////
public String getMarkupValue() {
return markUp;
}// end getECMarkupValue()
///////////////////////////////////////////////////////////////////////////
// setECMarkupValue() //
///////////////////////////////////////////////////////////////////////////
public void setMarkupValue(String markupValue) {
markUp = markupValue;
}// end getECMarkupValue()
这是我的基础数据模型。用户选择发送的数据 TCComponentItemRevision rev; TCComponentDataset componentdataset;
到ObservableList,然后我使用AplotDatasetData从rev,componentdataset获取更多信息来填充我的表。
因此,用户单击GUI上的一个按钮,打开一个新的gui对话框。新Gui还有一个包含几个新列的表 - 我只是试图获取第一个GUI中的用户填充的ObservableList,并使用它来构建新的arraylist。
ObservableList可以不扩展像AplotDatasetData这样的类吗?
答案 0 :(得分:2)
您可以从Collection创建新的ArrayList。由于org.eclipse.core.databinding.observable.list.IObservableList
是一个集合,
ArrayList<AplotDataModel.AplotDatasetData> tableData = new ArrayList<AplotDataModel.AplotDatasetData>(AplotDataModel.getInstance().getObservableList());
应该有用。
如果您不需要ArrayList,您也可以将IObservableList分配给List:
List<AplotDataModel.AplotDatasetData> tableData = AplotDataModel.getInstance().getObservableList();
答案 1 :(得分:-1)
您必须更改tableData ArrayList中的泛型以支持IObservable:
ArrayList<IObservable> tableData = AplotDataModel.getInstance().getObservableList();
基本上,你最初说我有一个装满苹果的篮子。把那堆苹果放在我的苹果篮子里。
然后,你去把苹果堆变成橙子。现在,你说要把那堆橙子放进我的苹果篮子里。你以为你可以把橘子放进去,因为它是一个篮子 - 但你不能。这是一个苹果篮子。把它换成橙色的篮子。
修改强>
我误解了这个问题。如果你想让它工作,你需要IObservableList来扩展ArrayList。
答案 2 :(得分:-1)
好吧,我不知道AplotDataModel是什么,但您可以使用<?extends ?>
,例如:
Class c = AplotDataModel.getInstance().getClass();
ArrayList<?extends c ?> tableData = AplotDataModel.getInstance().getObservableList();
或
ArrayList<?extends IObservalbeList ?> tableData = AplotDataModel.getInstance().getObservableList();