Можно ли переопределить ограничение поля на поле в дочернем классе
У меня есть родительский класс, давайте назовем его Parent
public class Parent {
@Basic(optional = false)
String stringOne;
@Basic(optional = false)
String stringTwo;
public String getStringOne() {
return stringOne;
}
public void setStringOne(String stringOne) {
this.stringOne = stringOne;
}
public String getStringTwo() {
return stringTwo;
}
public void setStringTwo(String parentTwo) {
this.stringTwo = parentTwo;
}
}
Тогда есть около 10 детских классов, вот один из них
public class ChildOne extends Parent{
@Override
public String getStringOne() {
return stringOne;
}
@Override
public String getStringTwo() {
return stringTwo;
}
}
Я знаю, что не могу переопределить переменные экземпляра, но возможно ли снять ограничение на дочерний класс. Например, я хотел бы, чтобы объект класса childOne имел null stringOne или null stringTwo, если я хочу. Но другие 9 дочерних объектов могут иметь ограничение из родительского класса.
Наиболее важной частью является то, что я не могу иметь родителя в качестве абстрактного. Я действительно сожалею об этом позднем редактировании.
1 ответ
Я верю в то, что вы хотите, это Mapped Superclass. Убедитесь, что вы помещаете аннотации на ваши получатели, а не на свойства.
@MappedSuperclass
public abstract class Parent {
String stringOne;
String stringTwo;
@Basic(optional = false)
public String getStringOne() {
return stringOne;
}
@Basic(optional = false)
public String getStringTwo() {
return stringTwo;
}
/* setters here */
}
@Entity
@Table(name="child_one")
public class ChildOne extends Parent{
@Override
@Basic(optional = true)
public String getStringOne() {
return stringOne;
}
@Override
@Basic(optional = true)
public String getStringTwo() {
return stringTwo;
}
/* setters here */
}