Как создать BigDecimal из DoubleBinding - PullRequest
0 голосов
/ 15 мая 2019

Как создать BigDecimal из DoubleBinding

private transient ObjectProperty<BigDecimal> sell;

private ObjectProperty<Operation> operation = new SimpleObjectProperty<>();
private ObjectProperty<BigDecimal> volume = new SimpleObjectProperty<>();

Ошибка:

 sell = Bindings.createDoubleBinding(new Callable<Double>() {
                Double volumeDouble = volume.get().doubleValue();
                @Override
                public Double call() throws Exception {
                    return (operation.get() == Operation.SELL) ? volumeDouble : 0;
                }
            }, volume, operation);

1 Ответ

2 голосов
/ 15 мая 2019

Нельзя привести ObjectBinding<BigDecimal> к ObjectProperty<BigDecimal>, поскольку используемый в этом случае класс привязки не расширяет ObjectProperty. Вы можете связать SimpleObjectProperty<BigDecimal> с ObjectBinding<BigDecimal> жестким.

Кстати: обратите внимание, что поле volumeDouble в вашем фрагменте кода назначается во время создания привязки и никогда не обновляется в зависимости от тома, даже если свойство volume изменяется позже.

final ObjectProperty<BigDecimal> sell = new SimpleObjectProperty<>(); 
ObjectBinding<BigDecimal> binding = Bindings.createObjectBinding(new  Callable<BigDecimal>() {
        @Override
        public BigDecimal call() {
            return (operation.get() == Operation.SELL) ? volume.get() : BigDecimal.ZERO;
        }
    }, volume, operation);
sell.bind(binding);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...