List.toArray()
возвращает массив Object[]
, а не массив BooleanProperty[]
, но вы приводите массив объекта к BooleanProperty
здесь:
(BooleanProperty[]) list.toArray()
Я рекомендую использовать Stream
's toArray
метод, принимающий IntFunction
:
Observable[] dependencies = propertiesList.stream()
.map(DatabasePane::changeProperty)
.toArray(Observable[]::new);
BooleanBinding change = Bindings.createBooleanBinding(() -> true, dependencies);
Если вы не измените Callable<Boolean>
на что-то более значимое, вы также можете опустить зависимости, поскольку привязка никогда не содержитзначение, но true
.
BooleanBinding change = Bindings.createBooleanBinding(() -> true, list);
не работает, так как сам список реализует Observable
, поэтому вы передаете массив, содержащий только список, параметру varargs, т.е. он эквивалентенв
BooleanBinding change = Bindings.createBooleanBinding(() -> true, new Observable []{ list });
, и только добавленный InvalidationListener
добавляется в сам список, а не в его содержимое.