Java 如何删除子类中变量的注释
假设我们有一个API类,它有一些字段,其中一些字段是使用Java 如何删除子类中变量的注释,java,validation,oop,inheritance,annotations,Java,Validation,Oop,Inheritance,Annotations,假设我们有一个API类,它有一些字段,其中一些字段是使用@NotNull注释强制设置的,如下所示: class SomeAPIClass { private String field1; private String field2; @NotNull public String getField1() { return field1; } public String getField2() { return f
@NotNull
注释强制设置的,如下所示:
class SomeAPIClass {
private String field1;
private String field2;
@NotNull
public String getField1() {
return field1;
}
public String getField2() {
return field2;
}
public void setField1(String field1) {
this.field1 = field1;
}
public void setField2(String field2) {
this.field2 = field2;
}
}
现在我们扩展了这个类并添加了一些我们自己的属性field3
,但是不希望使用field1
(这是必需的)
但由于
field1
被定义为API类中的必填字段,无法在此处触摸/更改该字段,因此验证失败。有什么方法可以去掉子类中的注释吗?如果不是Objective的直接子类,可以扩展该API类的父类,而不是使用继承,可以看看“派生类必须可以替换它们的基类。”-面向对象的Liskov原理。这意味着你在设计上有一个缺陷,导致了你所面临的问题。从父类继承时,不应更改其约定。如果父类表示方法永远不会返回null,则子类不能返回null。Java注释不会被继承,但看起来约束注释是由继承链上的验证器检查的。
class SomeCustomClass extends SomeAPIClass {
private String field3;
public String getField3() {
return field3;
}
public void setField3(String field3) {
this.field1 = field1;
}
}