私は非公開リストを持っていますが、一般的に外部から変更できるようにしたくありません。オブジェクトが有効な場合にのみ、外部からの追加のみが許可されます。したがって、私は次のように書いていました。
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 は外部から追加可能
- 外部から依存関係をバインドするために使用できます (作成メソッドはクラス バインディングを形成します) 。
- プロパティまたはリスト インスタンス自体の変更なし
- 独自の方法のみによる外部からのリスト コンテンツの変更