Есть ли безопасный способ сериализации / десериализации Java лямбда для двух разных JRE? - PullRequest
3 голосов
/ 27 апреля 2020

Существует клиент, которому необходимо сериализовать многие лямбда-функции, определенные на стороне клиента, и отправить их на сервер, который должен иметь возможность правильно десериализовать их.

На сервере также есть реализации всех этих Лямбда-функции в клиенте, но детали могут немного отличаться от реализаций на стороне клиента (например, незначительные различия в версиях).

Учитывая, что Java Лямбда зависит от определенных компилятором c артефактов, просто сериализуя Лямбда-функция в SerializedLambda и ее отправка на серверную часть не будут работать, поскольку незначительное отличие в реализации на серверной стороне может сделать ее несовместимой с сериализованным лямбда-выражением.

Мой вопрос здесь, с помощью сериализованной лямбды от клиента, есть ли способ вызвать соответствующую функцию лямбда на сервере? В этом случае у меня есть полный контроль над сериализацией / десериализацией, но у меня нет контроля над реализацией лямбда-функций в обоих клиент / сервер. Эти лямбда-функции могут быть тысячами или тысячами, что затрудняет мне определение правил для каждой лямбда-функции вручную.

Итак, данное (включающее) имя класса, типы методов (типы arg + return type), имя лямбда-функции, можно ли вызвать соответствующую реализацию лямбды на стороне сервера?


Что я могу сделать, если лямбда-выражения не из фиксированного набора? Разве невозможно иметь одно правило ser / deser для решения этой проблемы?

...