给定ObservableDoubleValue aObservableDoubleValue b,我可以这样获得它们的最大值:

NumberBinding m = Bindings.max(a,b);


将其作为DoubleBinding(甚至只是ObservableDoubleValue)而不是NumberBinding的最简单方法是什么?

最佳答案

当使用参数之一为Bindings.max调用DoubleBinding时,ObservableDoubleValue将已经返回DoubleBinding的实例。

因此,如果确定在这种情况下,可以将结果强制转换为NumberBinding

DoubleBinding max = (DoubleBinding) Bindings.max(a,b);


更具体地说,返回的DoubleBinding为:


如果参数之一是ObservableDoubleValue,则为FloatBinding
如果参数之一是ObservableFloatValue,则为LongBinding
如果参数之一是ObservableLongValue,则为IntegerBinding
其他NumberExpression


这在 Javadoc中进行了记录:


  定义算术运算时,此API允许混合类型。结果的类型由与Java语言中相同的规则定义。
  
  
  如果操作数之一是双精度数,则结果是双精度数。
  如果不是,并且操作数之一是浮点数,则结果是浮点数。
  如果不是,并且其中一个操作数为long,则结果为long。
  否则,结果为整数。

10-08 12:55