0

假设我正在编写一个反序列化实用程序,并且希望性能比反射更好。

我有一个Map<Class, MethodHandle>,其中 MethodHandle 是给定类的所需构造函数。当用户调用T deserialize(ByteBuffer, Class<T>)时,它会从 Map 中获取相应的 MethodHandle,从缓冲区中获取构造函数参数,然后调用MethodHandle::invoke. 这很好用。

问题是,除非 MethodHandle 是static final,否则性能等同于反射。

有没有办法使用 LambdaMetaFactory 或 MutableCallSite 来提高性能?我看不到如何使用 LambdaMetaFactory(我们需要提前知道接口类型?),并且创建 MutableCallSite 仍然不是static final.

4

0 回答 0