Binding 当三个属性在一个循环中有界时会发生什么?

Binding 当三个属性在一个循环中有界时会发生什么?,binding,javafx,Binding,Javafx,我绑定了三个属性,形成了一个绑定循环。但我不确定如何解释结果 DoubleProperty d1 = new SimpleDoubleProperty(1); DoubleProperty d2 = new SimpleDoubleProperty(2); DoubleProperty d3 = new SimpleDoubleProperty(3); d1.bind(d2.multiply(2)); //d1 = 4 d2.bindBidirectional(d3);//d2 = 3, d1

我绑定了三个属性,形成了一个绑定循环。但我不确定如何解释结果

DoubleProperty d1 = new SimpleDoubleProperty(1);
DoubleProperty d2 = new SimpleDoubleProperty(2);
DoubleProperty d3 = new SimpleDoubleProperty(3);

d1.bind(d2.multiply(2)); //d1 = 4
d2.bindBidirectional(d3);//d2 = 3, d1 = 6
d3.bind(d1);
最后,输出是

d1=12.0,d2=6.0,d3=12.0

问题是为什么d1、d2和d3的值不等于24、12和24

停止绑定的规则是什么


我想我在这里遇到了一个错误。

绑定检测到绑定中有一个无休止的循环。您更改的第一个值是d3。第二次更改d3后,它停止计算下一个值。因此,规则很简单,如果一个属性第二次更改,它是一个循环,并且计算停止。只要调试这段代码,看看如果您感兴趣的话会发生什么

你认为你犯了错误?你是否有错误?如果是,那是什么?我以为我会出错,但不是,我没有出错。