Встроенная стандартная десериализация не использует стандартное отражение для создания экземпляров.
Стандартное отражение не может создавать экземпляры без вызова конструктора (не обязательно конструктора no arg). Поэтому любой фреймворк, использующий только стандартное отражение, должен будет вызывать конструктор для создания экземпляра.
Чтобы создавать экземпляры без вызова конструктора, вам нужно какое-то расширение jvm-vendor c, например Unsafe
. Именно разработчики фреймворка могут использовать эти расширения, многие решают против этого. (XStream https://x-stream.github.io/faq.html - единственное, что я знаю о том, что на самом деле использует его)