Why are the constructors returned by the ReflectionFactor.newConstructorForSerialization () function called "munged"?
In Java, it is possible to instantiate a class without actually calling the declared constructor by retrieving it via sun.reflect.ReflectionFactor.newConstructorForSerialization ().
As far as I know, this special constructor is called "munged". Where does this term come from? I couldn't find it in any dictionary.
I believe it was used as in the following sense, because you are somehow bypassing / forging the normal object creation loop by skipping the constructor:
(calculations) modify or fake an email (or other internet address) so that it cannot be collected automatically, especially to avoid spam bots
(computation) modify the file; make irrevocable changes, destruction, blackout
Both definitions are taken from Princeton WordNet.
From wiktionary:
To convert data to undefined or in an inexplicable way.
The constructor to deserialize does not [necessarily] call the superclass's constructor and is not part of the original class. In terms of the JVM spec, this is illegal - a modified version of the legal constructor.
In addition, the classes from the sun. * should not be used directly as they might not be available in other JDK implementations (so this "constructor" might be undefined with another JDK).