Comments 16
+2
Как вариант ещё Unsafe.allocateInstance.
Тоже не вызывает конструктор, причём безо всякой кодогенерации.
Является JVM интринсиком, то есть, инлайнится на «ура».
Тоже не вызывает конструктор, причём безо всякой кодогенерации.
Является JVM интринсиком, то есть, инлайнится на «ура».
+2
Хм, для чего это может понадобиться? Наверно конструктор отсутствует не просто так, проблема в архитектуре и лучше усовершенствовать ее, чем использовать данный костыль?
-2
Я это сделал just for fun. Практического применения я не вижу, ну кроме каких-то сильно запущенных случаев исправления косяков в сторонних библиотеках для которых нет исходников.
+2
Кастомная десериализация, например.
0
Persistence, RPC и всё остальное, где нужно преобразовывать/восстанавливать объекты.
0
Разве в java нет штатных способов для этого?
0
Для внутреннего использования — да подойдет. Как библиотека для широго использования — не очень, т.к. гарантированно будет работать только на Oracle JVM. А на какой нибудь IBM, IKVM, Dalvik это не взлетит.
Инструментализация байткода более надежный способ.
Инструментализация байткода более надежный способ.
+1
Рад, что вы воспользовались моим предложением попробовать :-) Очередное подтверждение того, что нельзя никому верить на слово :-)
+1
Фактически использование того факта, что ява не вызывает контруктор при десериализации. А можно ли таким способом создать Enum?
0
Про взлом Enum'ов такое читал (не проверял код в статье).
0
Хороший вопрос. Надо проверить: как будет вести себя конструктор java.lang.Enum и что делать с инициализацией полей, особенно в случае с final.
Как будет время поэксперементирую и если что накопаю выложу на bitbucket
Как будет время поэксперементирую и если что накопаю выложу на bitbucket
0
Sign up to leave a comment.
Инстанцировать не инстанциируемое