Currently I'm using
AtomicReference to get a 3-state semantic for fields in my Java-Beans, that are serialized from and to JSON using Jackson. While this works pretty well out-of-the-box it's pretty annoying that
AtomicReference doesn't implement hashCode/equals (take away from my question on this was: for the envisioned usage of
AtomicReference hashCode/equals are of no meaning) and I need to manually alter hashCode/equals that are normally generated. Thus I wanted to introduce a custom reference type that should - in terms of de-/serialization - be handled just like
AtomicReference but implements proper hashCode/equals methods.
I took on how
AtomicReference is handled in Jackson. I found
AtomicReference(De)Serializer and implemented a custom
MyReferenceSerializer extends ReferenceTypeSerializer<MyReference<?>>. But to be used with the
@Json(De)Serialize annotations this implementations would need to provide a no-args constructor, which doesn't seem to be possible as the type information needed by
ReferenceTypeSerializer is dynamic and depends on the actually wrapped type.
Next I wanted to add the serializer and deserializer to the Jackson
ObjectMapper configuration by implementing
(De)Serializers and adding them to the
ObjectMapper only offers
Then I took a look on how
Optional is handled in Jackson and found the
Jdk8Module. There serializers and deserializers are added together with a type modifier. Do I need to implement a custom module as well?!
由于要使已生成的hashCode / equals开箱即用，实现所有这些似乎很容易完成，所以我想知道这是否真的是可行的方法，或者是否存在更简单的解决方案具有自定义引用类型。