我今天在使用 SpringBoot 时遇到了这个问题,我有一个父抽象类,它用弹簧注释定义了这样的受保护字段。
@Length(max=100)
protected String uuid;
在我的子类中,@Length注释的最大值需要设置为不同的值,我正在绞尽脑汁地研究如何做到这一点。在阅读之后,我怀疑有一种方法可以在类构造函数中的类成员变量上设置注释,这样我就可以为成员变量 uuid 定义@Length注释,然后覆盖子构造函数中的值,但没有找到任何示例或文档如果这是可能的。任何关于如何使用 spring 覆盖子类中的父受保护变量注释的想法或示例将不胜感激。
这是正在使用的全套注释...
@ApiModelProperty("Unique ID For My Object")
@Length(max=100)
@Pattern(regexp = "\S*")
protected String uniqueId
在java中,没有覆盖变量这样的事情。只能重写方法。最后这句话提出了如何解决问题的想法。如果您不直接在属性上指定注释,而是在特定字段的 getter 上指定注释,例如:
class Parent{
private String uniqueId;
...
@ApiModelProperty("Unique ID For My Object")
@Length(max=100)
@Pattern(regexp = "\S*")
public String getUniqueId(){
return uniqueId;
}
}
然后,您可以通过重写 getter 来覆盖子类中的这些属性:
class Child extends Parent{
private String uniqueId;
...
@ApiModelProperty("Unique ID For My Object")
@Length(max=200)
@Pattern(regexp = "\S*")
public String getUniqueId(){
return uniqueId;
}
}
我还没有检查这些注释是否也可以应用于 getter,但我希望如此。