1

Есть ли примеры, учебные пособия или документы для сериализации/травления/сортировки объектов в Scala? Я знаю о существовании scala.util.Marshal и scala.reflect.internal.pickling, но в чем разница между ними? как я могу его использовать? Это какая-то экспериментальная особенность или я могу использовать ее в производстве ...?Сериализация (травление/сортировка) в scala?

+0

'scala.util.Marshal' осуждается. Как правило, просто используйте возможности платформы для (де) сериализации, работает без проблем. – soc

ответ

1

Вы должны использовать либо сериализацию java (я рекомендую использовать подход Externalizable для сложных случаев). Вы можете найти множество учебников по googling "java serialization tutorial".

Если вы хотите остановиться в Scala, вы должны взглянуть на SBinary, который использует классы классного типа. Проект кажется старым и неподдерживаемым, но работает как шарм с Scala 2.9.2. В README есть учебная ссылка, и я пишу еще одну.

+0

Я не знал, что можно использовать сериализацию Java для объектов Scala –

+0

Единственное отличие состоит в том, что в Scala serializable есть аннотация. Посмотрите на этот вопрос: http://stackoverflow.com/questions/3442171/how-do-i-use-a-serializable-scala-object – paradigmatic

+0

Просто заметьте, Java Serialization не обрабатывает неизменяемый список [A] с использованием дженериков , Вместо этого вам придется использовать Array [A]. Я не уверен в других контейнерах. Внешний вид может быть не таким, как в случае классов case (pardon the pun). Для внешнего использования для внешнего устройства требуется конструктор no-arg с полями-мутаторами. Это может быть не идеально для тех, кто пытается придерживаться общего соглашения Scala придерживаться неизменных объектов. –

1

Не уверен насчет требований, которые у вас есть, но стоит посмотреть на буферы протокола Google и Apache Thrift. Оба обеспечивают эффективный механизм для сериализации.

Существует на Scala компилятор протокола Буферы ScalaBuff

+0

Вау! Удивительно, что мой проект упоминается как возможное решение! :) Я должен добавить, что я все еще работаю над некоторыми из более продвинутых частей, и это может быть не так просто настроить, как должно быть (я должен создать простой примерный проект), но он все равно должен работать довольно ну (протокол protobuf - это потрясающе!). Если у кого есть вопросы, просто откройте проблему на странице GitHub, и я отвечу как можно скорее! Для примера использования (с Android) найдите мой [проект SenseGrid] (https://github.com/SandroGrzicic/sensegrid). –

Смежные вопросы