从IObservableList创建ArrayList - 是否可能

时间:2012-12-17 19:51:30

标签: java

我正在从另一个类的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这样的类吗?

3 个答案:

答案 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();