我最近发现了图书馆 kryonet,它非常棒,非常适合我的需要。
但是,我遇到的一个问题是开发一种好的策略来注册所有可以转移的类。
我知道我可以在每个对象中编写一个静态方法,该方法将返回它使用的所有类的列表,但我真的宁愿不必这样做(出于我自己的时间目的,以及那些将扩展这些对象)。
我一直在尝试查看是否有一种方法可以从 getClass() 方法中获取对象引用的所有类(在它的字段中以及在它的继承中),但我无法取得任何成功。
最后,我知道 kryo 有 kryo.setRegistrationOptional(true) 但我很难弄清楚如何使用它。当这个选项打开时,如果我没有注册类,kryo 似乎仍然会抛出异常。此外,这种方法比注册所有类要慢得多。如果您第一次需要使用此方法发送对象很慢,我很好,但我不知道每次我想发送对象时严重的性能下降是否可以。
理想情况下,我将有一个我想使用 kryonet 发送的对象包。如果只是扫描那个包并确定我需要注册的所有类,那就太好了。现在并不是我的所有客户都需要注册每个对象,但这是一个单独的问题,我不知道是否有解决方案。
如果有人能指出我正确的方向,那就太好了。