我想用杰克逊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尚未提供答案。 这是可能的吗?