我最近發現了圖書館kryonet,它非常棒,非常適合我的需求。用kryo註冊課程的策略
但是,我遇到的一個問題是制定一個好的策略來註冊所有可以傳輸的類。
我知道我可以在每個對象中寫一個靜態方法,它將返回它使用的所有類的列表,但我真的寧願不必這樣做(爲我自己的時間目的,以及那些將會擴展這些對象的人)。
我在試圖查看是否有方法從getClass()方法獲取對象引用的所有類(在它的字段以及它的繼承中),但我無法獲得任何成功。
最後,我知道kryo有kryo.setRegistrationOptional(true),但我有一個非常困難的時間試圖找出如何使用它。當這個選項打開時,如果我沒有註冊類,kryo似乎仍然會拋出異常。而且,這種方法應該比能夠註冊所有類要慢得多。如果第一次使用這種方法發送對象的速度很慢,我很好,但我不知道每次我想發送一個對象時是否會出現嚴重的性能下降。
理想情況下,我將有一個對象包,我想用kryonet發送。如果只是有人要掃描那個軟件包並確定我需要註冊的所有類,那就太棒了。現在不是所有的客戶都需要註冊每個對象,但這是一個單獨的問題,我不知道是否有解決方案。
如果有人能指出我的方向是非常好的。