有两种只读可观察值:javafx.beans.binding.Binding
和javafx.beans.propety.ReadOnlyProperty
。
它们在实际应用中有何区别?我可以听听他们两个。
如果我想创建只读的observable,我应该实现什么接口?
答案 0 :(得分:1)
两者都是接口,因此您无法实例化。在实践中,您将使用其中一个的具体实现(例如StringProperty
,这是ReadOnlyProperty
的实现,或者StringBinding
的子类,这是一个Binding
)的实现,或者您将调用返回一个的方法。当调用方法时,类型当然是由方法的返回类型决定的。
功能差异在于属性包装通常通过存储在变量中直接实现的值,而绑定依赖于一个或多个其他值(并且可能只是“在运行中”计算根据要求)。
例如:
IntegerProperty x = new SimpleIntegerProperty(5); // a property, stores its value directly
IntegerProperty y = new SimpleIntegerProperty(10); // another property
// the sum of x and y, observable, but computed when required:
IntegerBinding sum = new IntegerBinding() {
{ super.bind(x, y); }
@Override
public int computeValue() {
return x.get() + y.get() ;
}
};