有一个客户端需要序列化客户端定义的许多 lambda 函数并将它们发送到服务器,服务器必须能够正确反序列化它们。
服务器在客户端也有所有这些 lambda 函数的实现,但细节可能与客户端实现略有不同(如版本控制差异)。
鉴于 Java Lambda 依赖于编译器特定的工件,简单地将 lambda 函数序列化为 SerializedLambda 并将其发送到服务器端是行不通的,因为服务器端实现的微小差异可能使其自身与序列化的 lambda 表达式不兼容。
我的问题是,使用来自客户端的序列化 lambda,有没有办法在服务器上调用相应的 lambda 函数?在这种情况下,我可以完全控制序列化/反序列化,但我无法控制客户端/服务器中 lambda 函数的实现。可能有成千上万个这样的 lambda 函数,这让我很难为每个 lambda 函数手动定义规则。
那么,给定(封闭)类名、方法类型(arg 类型 + 返回类型)、lambda 函数名,是否可以在服务器端调用相应的 lambda 实现?
如果 lambda 不是来自固定集合,我该怎么办?是否不可能有一个单一的 ser/deser 规则来解决这个问题?