Module javafx.base

Interface NumberExpression

All Superinterfaces:
Observable, ObservableNumberValue, ObservableValue<Number>
All Known Subinterfaces:
NumberBinding
All Known Implementing Classes:
DoubleBinding, DoubleExpression, DoubleProperty, DoublePropertyBase, FloatBinding, FloatExpression, FloatProperty, FloatPropertyBase, IntegerBinding, IntegerExpression, IntegerProperty, IntegerPropertyBase, JavaBeanDoubleProperty, JavaBeanFloatProperty, JavaBeanIntegerProperty, JavaBeanLongProperty, LongBinding, LongExpression, LongProperty, LongPropertyBase, NumberExpressionBase, ReadOnlyDoubleProperty, ReadOnlyDoublePropertyBase, ReadOnlyDoubleWrapper, ReadOnlyFloatProperty, ReadOnlyFloatPropertyBase, ReadOnlyFloatWrapper, ReadOnlyIntegerProperty, ReadOnlyIntegerPropertyBase, ReadOnlyIntegerWrapper, ReadOnlyJavaBeanDoubleProperty, ReadOnlyJavaBeanFloatProperty, ReadOnlyJavaBeanIntegerProperty, ReadOnlyJavaBeanLongProperty, ReadOnlyLongProperty, ReadOnlyLongPropertyBase, ReadOnlyLongWrapper, SimpleDoubleProperty, SimpleFloatProperty, SimpleIntegerProperty, SimpleLongProperty, SimpleStyleableDoubleProperty, SimpleStyleableFloatProperty, SimpleStyleableIntegerProperty, SimpleStyleableLongProperty, StyleableDoubleProperty, StyleableFloatProperty, StyleableIntegerProperty, StyleableLongProperty

public interface NumberExpression extends ObservableNumberValue
NumberExpression is an ObservableNumberValue plus additional convenience methods to generate bindings in a fluent style.

This API allows to mix types when defining arithmetic operations. The type of the result is defined by the same rules as in the Java Language.

  1. If one of the operands is a double, the result is a double.
  2. If not and one of the operands is a float, the result is a float.
  3. If not and one of the operands is a long, the result is a long.
  4. The result is an integer otherwise.

To be able to deal with an unspecified return type, two interfaces NumberExpression and its counterpart NumberBinding were introduced. That means if the return type is specified as NumberBinding, the method will either return a DoubleBinding, FloatBinding, LongBinding or IntegerBinding, depending on the types of the operands.

The API tries to do its best in determining the correct return type, e.g. combining a ObservableNumberValue with a primitive double will always result in a DoubleBinding. In cases where the return type is not known by the API, it is the responsibility of the developer to call the correct getter (ObservableNumberValue.intValue() etc.). If the internal representation does not match the type of the getter, a standard cast is done.

Since:
JavaFX 2.0