我需要将yml
文件反序列化为没有默认构造函数的Java对象。这将导致Jackson的ObjectMapper抱怨并引发异常。
特别是Java类不是我自己的(这是一个依赖项),因此我无法对其进行修改。作者对于该类的想法是使用“构建器模式”构造对象,但未提供默认构造函数。
为了避免这个问题,我想需要创建一个适配器类。然后,我将使用序列化适配器对象并填充构建器来构建我的对象。
有没有更清洁的方法来做到这一点?如果只有ObjectMapper提供从流中读取到特定对象的方法,那么我可以使用构建器创建一个空对象,然后用Jackson填充它。
答案 0 :(得分:1)
这只是@ Steve11235注释的扩展版本。
这不是适配器, 这只是一种解决方法。
Blammy
。Blammy
类中包括一个方法,以为所需的实际类填充Builder;我称这个为Blammy.builderate(DesiredBuilder)
Blammy
类。Blammy.builderate()
方法。答案 1 :(得分:0)
好的,所以我最终要做的是将YAML文件加载到Jackson的ObjectMapper中。然后,我遍历了表示YAML文件整个结构的JsonNode对象,然后将这些参数一般传递给builder类。