我可以注释从超类继承的成员吗?

2022-09-03 10:09:28

如果我有一个类,例如:

class Person {
  private String name;
  ...constructor, getters, setters, equals, hashcode, tostring...
}

我是否可以子类化并将注释应用于子类中的名称字段,例如应用持久性注释,而无需重新实现类的其余部分?

@Entity
class Employee extends Person {
    @Column(...)
    private String name;
}

答案 1

这不起作用,因为超类中的字段不会受到影响,但您可以尝试此操作

@Entity
class Employee extends Person {
  @Column(name="xxx")
  @Override
  public void setName(String name) {
     super.setName(name);
  }
  ...

答案 2

不能。

您建议的是字段阴影 - 您无法覆盖字段。

子类中的字段与超类中的字段没有任何关系,除了它共享与“name”相同的名称,因此要区分超类中的字段,必须将其称为子类中的字段。namenamesuper.name

这样做通常被认为是一个“bug”(或者无论如何都是一个潜在的bug),最佳实践是不要影子字段,因为在不知情的情况下很容易引用错误的字段。


推荐