我想创建一个几乎与FXCollections.observableArrayList()返回的对象相同的类,但具有一些额外的功能。我的第一个念头是

public class MyObservableList implements ObservableList
{
    private ObservableList list = FXCollections.observableArrayList();

    public functionWhatever()
    {
        // whatever
    }

}

但这意味着要覆盖ObservableList附带的〜30个函数(这似乎暗示我做错了什么)。
FXCollections.observableArrayList()返回类型为com.sun.javafx.collections.ObservableListWrapper的对象,但是当我扩展ObservableListWrapper时,我需要创建类似以下的构造函数
MyObservableList( List arg0 )

或者
MyObservableList( List arg0, Callback arg1 )

这让我很担心,因为FXCollections.observableArrayList()不接受任何参数。

我不知道FXCollections如何创建它返回的ObservableListWrapper对象,但我希望MyObservableListFXCollections返回的对象相同(外加一些额外的功能)。

我该怎么做呢?

最佳答案

扩展 SimpleListProperty docs.oracle.com

此类提供包装ObservableList的Property的完整实现。

注意此ctor:

公共(public)SimpleListProperty(ObservableList initialValue)

所以你可以:

public class MyObservableList extends SimpleListProperty
{
    //constructor
    MyObservableList(){
        super(FXCollections.observableArrayList());
    }

    public functionWhatever()
    {
        // whatever
    }

}

这样,您的类将基于ArrayList。

09-04 15:03