我正在this question中讨论,我正在开发自定义Java对象持久性框架。
我要解决的一个问题是在构造函数参数和类中的对应字段之间强制使用统一的注释值。
是否可能知道构造函数中的哪个参数用于通过反射设置类中的特定字段?例如,如果构造函数包含参数String textXYZ
,而类包含字段String textABC
,则在构造函数中执行:textABC = textXYZ
(因此字段/参数具有不同的名称)。是否有可能通过反射知道字段textABC
与构造函数参数textXYZ
相关联?
这将允许我仅在字段上设置注释,然后推导出参数的注释值,反之亦然。
谢谢
自Java 7起,就有一个专门用于此目的的注释:ConstructorParameters
。当放置在构造函数上时,它显示该构造函数的参数如何对应于构造对象的getter方法。鉴于此,您可以推断出哪些字段是相关的。当然,没有人强迫构造函数具有此批注,但这是将字段和ctor参数关联的唯一standard方法。出于同一目的,许多工具(例如Jackson,Jsonb等)都有自己的注释。