Java 如何删除子类中变量的注释

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

假设我们有一个API类,它有一些字段,其中一些字段是使用
@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;
    }

}