我有一個可序列化的對象,有很多字段,其中一些是強制性的,其他是可選的。爲了使這個對象易於使用,我在Builder Pattern with a Twist上拍了一張照片。這很好,但一些生成的Builder的方法需要多個參數。這裏有一個例子:對於接受多個參數的setter,是否有類似於@JsonCreator的註釋?
@JsonProperty("foo")
public Builder setFoo(String foo) {
this.foo = foo;
return this;
}
public Builder setBarAndZip(@JsonProperty("bar") String bar, @JsonProperty("zip") String zip) {
this.bar = bar;
this.zip = zip;
return this;
}
我提供我的批註父類(即該生成器生成的類)與@JsonDeserialize(builder = MyClass.Builder.class)
,傑克遜處理foo
沒有問題。但是,它不會調用setBarAndZip(...)
,因此,bar
或zip
都不會被反序列化。
我發現我可以通過將我的@JsonProperty
註釋直接放置在構建器的私有字段而不是放置在setter上來解決這個問題,所以我有一個解決方法,但有沒有更好的方法?
構造函數可以藉助@JsonCreator
註釋來接受多個參數。是否有可以應用於setBarAndZip(...)
的等效註釋讓傑克遜可以在其參數上看到@JsonProperty
註釋?