Fix #529: Support serializing the Enum class object #530
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
When an
Enum.class
instance is serialized (byClassSerializer
), thiscauses the creation of the registered default serializer (
EnumSerializer
)with this call chain:
This is done so that
Kryo.writeClass
can write the class name or the idof the serializer registration.
Until now, the
EnumSerializer
failed instantiation for a type withnull
enum constants. This however is the case for
Enum.class
itself.The creation of
EnumSerializer
forEnum.class
is now allowed, under theassumption that this happens in the context of the
Enum.class
serialization,and that
write
/read
on the createdEnumSerializer
instance will neverbe called. This assumption should be safe, since there should never be an instance
of the abstract
Enum
class.