Как вариант ещё Unsafe.allocateInstance.
Тоже не вызывает конструктор, причём безо всякой кодогенерации.
Является JVM интринсиком, то есть, инлайнится на «ура».
Хм, для чего это может понадобиться? Наверно конструктор отсутствует не просто так, проблема в архитектуре и лучше усовершенствовать ее, чем использовать данный костыль?
Я это сделал just for fun. Практического применения я не вижу, ну кроме каких-то сильно запущенных случаев исправления косяков в сторонних библиотеках для которых нет исходников.
Для внутреннего использования — да подойдет. Как библиотека для широго использования — не очень, т.к. гарантированно будет работать только на Oracle JVM. А на какой нибудь IBM, IKVM, Dalvik это не взлетит.
Инструментализация байткода более надежный способ.
Хороший вопрос. Надо проверить: как будет вести себя конструктор java.lang.Enum и что делать с инициализацией полей, особенно в случае с final.
Как будет время поэксперементирую и если что накопаю выложу на bitbucket
Инстанцировать не инстанциируемое