[英]In TornadoFX, how can I bind BigDecimal properites to another BigDecimal property using objectBinding?
我试图建立一个绑定BigDecimal
属性,它是其他两者的计算BigDecimal
性质在,就像这样:
val caculatedProperty: ObjectProperty<BigDecimal> = objectBinding<Any, BigDecimal>(sumProperty, discountProperty) { ... }
...就像我会使用StringProperty
或IntegerProperty
,否则它将正常工作。 但是,这一次我得到了一个类型不匹配:它期望使用ObjectProperty<BigDecimal>
,但是接收到ObjectBinding<BigDecimal?>
。
这是什么问题 我没有正确使用objectProperty()
方法吗? 是否应该使用其他方法来创建自定义对象的绑定?
编辑:
问题是我试图使用ObjectBinding<BigDecimal>
从父类覆盖ObjectProperty<BigDecimal>
ObjectBinding<BigDecimal>
。 在我的情况下,解决方案是使原始ObjectProperty<BigDecimal>
抽象,并将实现留给继承它的类。
所有xBinding
函数都返回绑定,而不返回属性。 如果您考虑一下,如果可写属性是可写的,它将如何表现? 是否应该写回基础属性? TornadoFX实际上也支持这些代理属性,但是我怀疑那不是您想要的。
您是否想知道为什么要使用ObjectBinding<BigDecimal?>
而不是ObjectBinding<BigDecimal>
?
原因是基础属性可能为null,如果这样,我们可能还希望从计算的绑定中返回null。
这通常不会产生问题,该属性仍然是可观察的,并且将携带正确的计算得出的BigDecimal
值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.