Есть ли смысл использовать сериализацию, если надо...
# russian
v
Есть ли смысл использовать сериализацию, если надо сохранить данные из таблицы, в которой строки и столбцы - это `ObservableList`ы? Да к тому же ещё и пропертя в качестве элементов. Я так понял, что все эти классы в Джаве несериализуемые
m
Я там как раз пилю сериализацию для структур из пропертей. (в :persistence и :sql) https://github.com/Miha-x64/reactive-properties/
v
А там нет аннотаций типа
@XmlRootElement
? Я нашёл интерфейсы
Property
и
MutableProperty
, интерфейсы же, вроде как, не маршализуются JAXB-ом?
m
Не, там хороший код, никаких аннотаций 🙂 См. Struct, StructDef и Converter, но оно пока не готово
Начёт ObservableList. Буду рад, если подскажут, как правильно проложить мост между
Property<List<T>>
и
ObservableList<T>
.
v
Эх, если б я понимал отчётливо. Я лишь понял, что
ObservableList
добавляет 2 метода для
Observable
и 4 для
List
и ещё 3, вроде новых, тогда как
Property
добавляет только 2 метода к
Observable
, остальное - специфичное для пропертя (
bind
,
unbind
,
getValue
, ...)
Но голые интерфейсы же не используются. Там ещё добавляются интерфейсы и классы, когда дело доходит до
SimpleObjectProperty
и
ObservableListWrapper
И объект типа
SimpleObjectProperty
не реализует
Iterable
(если не ошибаюсь), т. ч. там только
getValue
, чтобы получить список, а уж потом можно по нему бегать, тогда как по
ObservableList
можно сразу бегать и получать значения
Я не представляю, как это можно замутить.
Property<List>
будет реагировать только, когда ему лист целиком присвоить, а
ObservableList
срабатывать на добавлении/удалении элементов. Вроде, при изменении самих элементов он и носу не кажет, я делал для таблицы
ObservableList<ObservableList<ObservableValue<Any>>>
, а теперь испытваю нужду это всё сериализовать
Ну или хоть как-то сохранять всё содержимое, желательно, с минимальными затратами
m
я бы присваивал новый неизменяемый лист, да
v
Только я вот сомневаюсь, что внутренний список должен быть реактивным, ну упростить до
ObservableList<List<ObservableValue<Any>>>
, т. к. внутренний отвечает за столбцы, а они не добавляются автоматически
Тогда в любом случае придётся пробегать по спискам в двух измерениях, чтобы
ObservableValue<Any>
переделать в
Any
И я подозреваю, что смысл в сериализации отпадает уже, Т. к. по-одному элементы можно да хоть в файл записывать