Я пытаюсь реализовать систему регистрации для объектов определенного типа c.
Я сохраняю их в WeakHashMap
внутри метода stati c другого класса. Таким образом, я могу отслеживать их изменения, не влияя на то, когда они построены / деконструированы. Единственная проблема заключается в том, что эти объекты сериализуемы и ЧАСТО будут сериализованы / десериализованы.
Чтобы добавить больше деталей, рассматриваемый класс является подтипом класса, который определен внутри фреймворка. Подкласс сериализуется / десериализуется внутри этой структуры, поэтому у меня нет возможности изменить это поведение суперкласса (потому что этот код находится в структуре). По какой-то причине не нужно реализовывать десериализацию в подклассе, и она автоматически обрабатывается фреймворком.
Проблема в том, что я могу зарегистрировать такой объект. объект когда-либо сериализуется, чем десериализуется, я теряю ссылку, поэтому он удаляется из моего WeakHashMap
, и когда он воссоздается, этот конструктор не вызывается, поэтому я не могу повторно добавить его в свой WeakHashMap
.
Цель было бы как-то переопределить метод, который будет автоматически вызываться внутри ClassIWantToLog
при десериализации, чтобы я мог передать этот новый объект в StaticToolsClass
.
Я готов использовать отражение, если это необходимо, и если это вообще возможно, надеюсь, переопределение указанного метода не приведет к добавлению слишком большого количества кода (например: я не хочу также реализовывать настраиваемую десериализацию).