Представьте себе два отдельных проекта, которые имеют общие интерфейсы - например, оба содержат 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
?