1

私は非公開リストを持っていますが、一般的に外部から変更できるようにしたくありません。オブジェクトが有効な場合にのみ、外部からの追加のみが許可されます。したがって、私は次のように書いていました。

private List<Object> list = new ArrayList<>();

public List<Object> getList()
{
    return Collections.unmodifiableList(list);
}

public void addObject(Object object)
{
    if (isObjectValid(object)) //any validation
        list.add(object);
}

ここで、JavaFX の目的で、リストをプロパティに変換します。

private ListProperty<Object> list =
               new SimpleListProperty<>(FXCollections.observableArrayList());

データ バインディングのようなプロパティの利点から利益を得るには、ListChangeListenerそのプロパティを外部の世界に提供する必要があります。ただし、リストのすべてのメソッドへのアクセスも提供されます。(リスト インスタンス自体は変更されないため、ReadOnlyListProperty を使用しても効果はありません。) すべての目標を達成するにはどうすればよいですか。

  • プライベート ListProperty
  • ListChangeListener は外部から追加可能
  • 外部から依存関係をバインドするために使用できます (作成メソッドはクラス バインディングを形成します) 。
  • プロパティまたはリスト インスタンス自体の変更なし
  • 独自の方法のみによる外部からのリスト コンテンツの変更
4

1 に答える 1