En TornadoFX, ¿cómo puedo vincular las properties de BigDecimal a otra propiedad de BigDecimal usando objectBinding?

BigDecimal crear una propiedad BigDecimal que sea un cálculo de otras dos características BigDecimal , como esta:

 val caculatedProperty: ObjectProperty<BigDecimal> = objectBinding<Any, BigDecimal>(sumProperty, discountProperty) { ... } 

… como lo haría con StringProperty o IntegerProperty , y de lo contrario funcionaría sin problemas. Sin embargo, esta vez obtengo una discrepancia de types: espera ObjectProperty<BigDecimal> , pero recibe ObjectBinding<BigDecimal?> .

¿Cuál es el problema aquí? ¿Utilicé el método objectProperty() incorrectamente? ¿Debo usar algún otro método para crear un enlace de un object personalizado?

EDITAR:

El problema era que estaba intentando anular ObjectProperty<BigDecimal> de la class padre con ObjectBinding<BigDecimal> . La solución, en mi caso, era hacer el ObjectProperty<BigDecimal> original de ObjectProperty<BigDecimal> , y dejar la implementación a las classs que lo henetworkingan.

Todas las funciones de xBinding devuelven enlaces, no properties. Si lo piensas, ¿cómo se comportaría una propiedad calculada si fuera escribible? ¿Debería volver a escribir en las properties subyacentes? TornadoFX también admite este tipo de properties proxy, pero sospecho que no es lo que buscas.

¿Te estás preguntando por qué obtienes ObjectBinding<BigDecimal?> lugar de ObjectBinding<BigDecimal> ?

La razón es que la propiedad subyacente puede ser nula, y si es así, es posible que deseemos devolver nulo del enlace calculado también.

Esto normalmente no crea un problema, la propiedad sigue siendo observable y llevaría el valor BigDecimal calculado correcto.

  • TornadoFX ItemViewModel se actualiza si se cambia el object de respaldo que no expone las properties de JavaFX
  • En TornadoFX, ¿cómo puedo hacer que una propiedad cambie cuando cambian otras properties?
  • preguntas sobre DI, ViewModel, etc.
  • La compilation de Gradle no puede encontrar tornadofx en Linux
  • Cómo mostrar datos usando la vista de tree de TornadoFX
  • tornadofx EventBus expande la fila de la tabla usando el object tableview
  • Tornadofx - Cómo pasar el parámetro a Fragment en cada instancia
  • En TornadoFX, ¿cómo puedo separar layouts en diferentes classs y luego usarlos en el generador?
  • TornadoFX cómo enlazar Node style (o styleClass) a una propiedad?
  • TornadoFX - Creación de un layout MVP
  • Kotlin y TornadoFX: ¿une una propiedad observable a una function de recostackción?