Недавно я открыл для себя библиотеку kryonet, которая очень классная и отлично подходит для моих нужд.
Однако единственная проблема, с которой я столкнулся, заключается в разработке хорошей стратегии для регистрации всех классов, которые могут быть переданы.
Я знаю, что могу написать статический метод в каждом объекте, который будет возвращать список всех используемых им классов, но я действительно предпочел бы не делать этого (в личных целях, а также для тех, кому будет интересно). расширение этих объектов).
Я пытался выяснить, есть ли способ получить все классы, на которые ссылается объект (в его полях, а также в его наследовании) из метода getClass(), но мне не удалось добиться успеха.
Наконец, я знаю, что у kryo есть kryo.setRegistrationOptional(true), но мне очень трудно понять, как его использовать. Когда эта опция включена, крио по-прежнему выдает исключения, если я не зарегистрировал классы. Кроме того, этот предполагаемый метод намного медленнее, чем возможность регистрации всех классов. Я в порядке, если в первый раз, когда вам нужно отправить объект с помощью этого метода, это будет медленно, но я не знаю, согласен ли я с серьезным снижением производительности каждый раз, когда я хочу отправить объект.
В идеале у меня будет пакет объектов, которые я захочу отправить с помощью крионета. Если бы было просто просканировать этот пакет и определить все классы, которые мне нужно зарегистрировать, это было бы отлично. Теперь не всем моим клиентам нужно будет регистрировать каждый объект, но это отдельная проблема, и я не знаю, есть ли для этого решение.
Если бы кто-нибудь мог указать мне в правильном направлении, это было бы превосходно.