1

我有一个 POJO,我正在尝试使用 Jackson 进行 ser/deser。但是,我希望该类提供自己的 ser/deser 逻辑。所以我可以写这样的东西:

@JsonDeserialize(using = MyClass.class)
@JsonSerialize(using = MyClass.class)
class MyClass ... {

    private String x;
    private String y;

    // getters and setters

    void serialize(MyClass object, JsonGenerator jsonGenerator,
        SerializerProvider serializerProvider) throws IOException {
            ....
    }

    MyClass deserialize(JsonParser jsonParser,
        DeserializationContext deserializationContext) throws IOException {
            ....
    }
}

我不想编写两个类来为我定义的每个 POJO 提供 ser / deser 逻辑。

  1. 鉴于 JsonSerializer 和 JsonDeserializer 是抽象类而不是接口,我可以使用任何类型的代理机制来实现这一点吗?
  2. 这是否违反了良好的做法?

初步研究:

  • 堆栈溢出问题
  • 次讨论。
4

1 回答 1

1

不; 你不能创建一个实现两个抽象类的类。因此,如果直接实现这些类,则需要两个单独的类。

至于代理:有什么好处?编写的功能量是相同的;如果有共性,将它们抽象为实用程序类。那么你要解决的实际问题是什么?(假设这不仅仅是个人喜好的问题)

于 2013-10-06T23:42:45.950 回答