1

我正在从另一个类中的 ArrayList 创建一个新的 ArrayList。

  ArrayList<AplotDataModel.AplotDatasetData> tableData = AplotDataModel.getInstance().getArrayData();

我已经将另一个类中的数组列表更改为 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 组件数据集;

到 ObservableList,然后我使用 AplotDatasetData 从 rev 获取更多信息,componentdataset 来填充我的表。

因此,用户单击 GUI 上的一个按钮,打开一个新的 gui 对话框。新的 Gui 还有一个包含几个新列的表 - 我只是想获取用户在第一个 GUI 中填充的 ObservableList 并使用它来构建一个新的数组列表。

ObservableList 不能扩展像 AplotDatasetData 这样的类吗?

4

3 回答 3

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();
于 2012-12-17T20:16:26.733 回答
-1

您必须更改 tableData ArrayList 中的泛型以支持 IObservable:

ArrayList<IObservable> tableData = AplotDataModel.getInstance().getObservableList();

基本上,你最初说我有一篮子苹果。把那边那堆苹果放进我的苹果篮里。

然后,你去把那堆苹果换成了橘子。现在,你是说把那堆橙子放进我的苹果篮里。你认为你可以把橙子放进去,因为它是一个篮子——但你不能。这是一个苹果篮。将其更改为橙色篮子。

编辑

我误读了这个问题。如果你想让它工作,你需要 IObservableList 来扩展 ArrayList。

于 2012-12-17T19:54:22.640 回答
-1

好吧,我不知道 AplotDataModel 是什么,但是您可以使用<?extends ?>,例如:

Class c = AplotDataModel.getInstance().getClass();
ArrayList<?extends c ?> tableData = AplotDataModel.getInstance().getObservableList();

或者

ArrayList<?extends IObservalbeList ?> tableData = AplotDataModel.getInstance().getObservableList();
于 2012-12-17T19:56:38.843 回答