gpt4 book ai didi

java - 如何为 Kryo Serializer 注册多个类? (例如包中的所有类)

转载 作者:行者123 更新时间:2023-11-30 03:25:52 26 4
gpt4 key购买 nike

注册所有类以实现高效的 Kryo 序列化需要花费大量时间。所以我试图制作一个将包作为参数的 Kryo 注册器(在 Java 或 Scala 中)。我想知道最简单的方法是什么? (当然,通过反射,但使用现有的库更好)非常感谢您的帮助。

最佳答案

它不是一个自定义的注册器(尽管您无疑可以将其变成一个),但您可以使用 Reflections库来获取扩展感兴趣包中的Object的所有类的Set。然后只需注册集合中的每个成员即可。

Reflections reflections = new Reflections(new ConfigurationBuilder()
.setUrls(ClasspathHelper.forPackage("your.package"))
.setScanners(new SubTypesScanner(false)));
Set<Class<? extends Object>> types = reflections.getSubTypesOf(Object.class);
for (Class c : types) {
kryoInstance.register(c.getClass());
}

请注意,这将注册扩展 Object 的每个类(包括匿名类、内部类等)。通过使用库的注释功能将您注册的内容限制为您真正想要的类,您可能会得到更好的服务 - 除非这就是指定包中的全部内容!

关于java - 如何为 Kryo Serializer 注册多个类? (例如包中的所有类),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30250279/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com