Десериализация несуществующей реализации интерфейса - PullRequest
0 голосов
/ 28 октября 2018

Представьте себе два отдельных проекта, которые имеют общие интерфейсы - например, оба содержат interface CommonA.Теперь запуск Program#1 содержит class Project1Class : CommonA, а второй - нет.Можно ли как-то сериализовать, передавать (т. Е. Через сеть), а затем в Program#2 десериализовать экземпляр Project1Class, хотя он не знает о его реализации?

Моя проблема заключается в следующем:

Program#2 предоставляет интерфейсы для сложных задач - вы реализуете интерфейс, который говорит, как он должен быть вычислен (все неизменно).Я хотел бы иметь второй Program#1 (полностью отделенный от #2), в котором эти интерфейсы реализованы и во время выполнения отправляется в Program#2, который впоследствии десериализует эти классы, использует их для вычислений и затем возвращает вычисленные данные.

Например - Program#2 не знает, как выполнить операцию +, но предоставляет интерфейс interface NumberMagic с методом int doStuff(int a, int b)Program#1 этот интерфейс реализован для чего-то вроде class Add : NumberMagic { override int doStuff(int a, int b) { return a + b; } }.Но машина, которая питает Program#1, недостаточно мощна, чтобы выполнять такую ​​работу, поэтому ее нужно отправить в Program#2.

JVM world (точнее, Kotlin).- Есть ли способ, как это сделать?Может быть, даже отправив «исходный код» класса Add и затем скомпилировав его на машине с Program#2?

...