我想用傑克遜2.如何在不觸及源代碼的情況下向方法/構造函數參數添加註釋?
class Item {
public Item(Long id) {}
}
脫/ seralize框架對象(沒有源代碼訪問)到JSON我發現這個Add annotation to a parameter on a new method created with Javassist但是這種解決方案是基於JavaAssist並不能完全適用:(
根本的問題是缺乏DefaultConstructors的可一起使用@JsonCreator註釋具有匹配@JsonProperty註釋爲參數來解決。
@JsonCreator
class Item {
public Item(@JsonProperty("id") Long id) {}
}
我設法使用mixin類爲許多子類中的一個實現此目的。
public abstract class ItemChildMixin {
@JsonCreator
public ItemChildMixin(@JsonProperty("objId") final Long objId) {
}
}
然而,書寫了所有相關的物體混入類幾乎相同的內容似乎是錯誤的做法,所以我開始尋找方面。
添加在該項目的層次結構中的註釋中的類很簡單:
aspect DeclareJsonCreatorAspect {
declare @constructor: Item+.new(Long): @JsonCreator;
}
不過,我似乎無法找到一種方法來註釋添加到使用方面的構造函數的參數! Aspectj in Action以及Google尚未提供答案。 這是可能的嗎?