给定ObservableDoubleValue a
和ObservableDoubleValue 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。
否则,结果为整数。