Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 作为一个可观察的次左旋值的两个可观察的次左旋值的最大值_Java_Data Binding_Javafx_Javafx 8 - Fatal编程技术网

Java 作为一个可观察的次左旋值的两个可观察的次左旋值的最大值

Java 作为一个可观察的次左旋值的两个可观察的次左旋值的最大值,java,data-binding,javafx,javafx-8,Java,Data Binding,Javafx,Javafx 8,给定可观察到的超高值a和可观察到的超高值b,我可以这样得到它们的最大值: NumberBinding m = Bindings.max(a,b); 将其作为双重绑定(甚至只是一个可观察到的超高值)而不是数字绑定,最简单的方法是什么?您可以创建自己的绑定: DoubleProperty a = ... DoubleProperty b = ... DoubleBinding maxBinding= new DoubleBinding() { { super.bind

给定
可观察到的超高值a
可观察到的超高值b
,我可以这样得到它们的最大值:

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

将其作为
双重绑定
(甚至只是一个
可观察到的超高值
)而不是
数字绑定
,最简单的方法是什么?

您可以创建自己的绑定:

DoubleProperty a = ...
DoubleProperty b = ...
DoubleBinding maxBinding= new DoubleBinding() {

     {
         super.bind(a, b);
     }

     @Override
     protected double computeValue() {
         return Math.max(a.doubleValue(), b.doubleValue());
     }

     @Override
     public void dispose() {
         super.unbind(a, b);
     }
 };

另请参见的JavaDoc。

您可以创建自己的绑定:

DoubleProperty a = ...
DoubleProperty b = ...
DoubleBinding maxBinding= new DoubleBinding() {

     {
         super.bind(a, b);
     }

     @Override
     protected double computeValue() {
         return Math.max(a.doubleValue(), b.doubleValue());
     }

     @Override
     public void dispose() {
         super.unbind(a, b);
     }
 };

另请参见的JavaDoc。

Bindings.max
将在调用它时返回一个
DoubleBinding
实例,其中一个参数是
observedOutleValue

因此,如果您确定在这种情况下是正确的,那么您可以将结果强制转换为
双绑定

DoubleBinding max = (DoubleBinding) Bindings.max(a,b);
更具体地说,返回的
NumberBinding
是:

  • DoubleBinding
    如果其中一个参数是一个
    可观察到的次左值
  • else
    FloatBinding
    如果其中一个参数是
    observeFloatValue
  • else
    LongBinding
    如果其中一个参数是
    ObservableLongValue
  • else
    整数绑定
这在Javadoc中有记录:

此API允许在定义算术运算时混合类型。结果的类型由与Java语言中相同的规则定义

  • 如果其中一个操作数是double,则结果是double
  • 如果不是,并且其中一个操作数是浮点,则结果是浮点
  • 如果不是,并且其中一个操作数是长的,则结果是长的
  • 否则,结果为整数

Bindings.max
在调用它时,其中一个参数是
observedOutleValue
,它将返回一个
DoubleBinding
的实例

因此,如果您确定在这种情况下是正确的,那么您可以将结果强制转换为
双绑定

DoubleBinding max = (DoubleBinding) Bindings.max(a,b);
更具体地说,返回的
NumberBinding
是:

  • DoubleBinding
    如果其中一个参数是一个
    可观察到的次左值
  • else
    FloatBinding
    如果其中一个参数是
    observeFloatValue
  • else
    LongBinding
    如果其中一个参数是
    ObservableLongValue
  • else
    整数绑定
这在Javadoc中有记录:

此API允许在定义算术运算时混合类型。结果的类型由与Java语言中相同的规则定义

  • 如果其中一个操作数是double,则结果是double
  • 如果不是,并且其中一个操作数是浮点,则结果是浮点
  • 如果不是,并且其中一个操作数是长的,则结果是长的
  • 否则,结果为整数