2009-09-15 7 views
2

В Java можно создавать экземпляры класса без фактического вызова объявленного конструктора путем извлечения одного из них через sun.reflect.ReflectionFactor.newConstructorForSerialization().Почему конструкторы возвращаются функцией ReflectionFactor.newConstructorForSerialization(), называемой «munged»?

Насколько я знаю, этот специальный конструктор называется «munged». Откуда этот термин? Я не мог найти его в любом словаре.

+1

Почему, по вашему мнению, это называется «munged»? Я никогда не слышал этого, у тебя есть ссылка за руку? –

+0

http://svn.xstream.codehaus.org/browse/xstream/trunk/xstream/src/java/com/thoughtworks/xstream/converters/reflection/Sun14ReflectionProvider.java?r=HEAD – Martin

ответ

2

Я считаю, что он используется как в следующем смысле, потому что вы как-то в обход/притворяется нормальный цикл создания объекта, пропустив конструктор:

(вычисления) изменить или поддельные электронной (или другое интернет), так что не может быть автоматически собран, esp. во избежание спам-ботов

(расчет) изменить файл; сделать безвозвратные изменения, уничтожения, запутать

Оба определения из WordNet Принстонского.

0

От Викисловаря:

To transform data in an undefined or unexplained manner.

Конструктор десериализация не [обязательно] называют конструктор суперкласса и не является частью исходного класса. С точки зрения JVM spec, это незаконно - измененная версия юридического конструктора.

0

Кроме того, классы из пакета sun. * Не должны использоваться напрямую, поскольку они могут быть недоступны для других реализаций JDK (так что этот «конструктор» может быть не определен с другим JDK).

+0

Вы можете использовать objenesis: http: //code.google.com/p/objenesis/ Есть ситуации, когда вам необходимо обойти конструкторы: * Сериализация, удаление и сохранение. Объекты должны быть созданы и восстановлены в определенном состоянии без вызова кода. * Прокси, библиотеки AOP и Mock Objects. Классы могут быть подклассифицированы без необходимости беспокоиться о конструкторе super(). * Контейнерные рамки. Объекты могут быть динамически инсталлированы нестандартными способами. (Взято с веб-сайта выше.) – Martin