当使用ReadOnlyProperty和Binding时

时间:2015-07-09 18:45:14

标签: javafx

有两种只读可观察值:javafx.beans.binding.Bindingjavafx.beans.propety.ReadOnlyProperty

它们在实际应用中有何区别?我可以听听他们两个。

如果我想创建只读的observable,我应该实现什么接口?

1 个答案:

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