У меня вопрос о наследовании/принуждении определенного значения к атрибуту в Java, о котором я не уверен, даже я трачу много времени на размышления об этом. Я постараюсь быть максимально простым.Принудительный тип атрибута Java в подклассе
Так I've получил абстрактный классFoo
, который имеет Ломбок аннотацию @Data
:
@Data
public abstract class Foo{
private String id;
protected BoundType type;
public abstract void setBoundType(BoundType boundType);
}
Вот перечисление BoundType
:
public enum BoundType {
IN, OUT;
}
И I've получил еще два классы, InFoo
и OutFoo
, которые распространяются на Foo
. boundType
InFoo
всегда должен быть перечисляемым типом IN. С другой стороны, boundType
в OutFoo
всегда должен быть перечисляемым типом OUT. Например:
@Data
public class InFoo extends Foo{
public void setBoundType() {
//ALWAYS HAS TO BE BoundType.IN
}
}
Как я могу обеспечить соблюдение этого? Не знаете, как его проектировать. Заранее спасибо.
ISN» Это будет хорошо, если мы определим BouudType как приватную переменную в классе InFoo и не выставим его getter и setter? –
Не нарушаете принцип наследования, позволяя подклассу определить тип? –
да, но все, как мы вынуждаем значение, должны быть IN или OUT, поэтому я думаю, что не имеет смысла подвергать свой сеттер своему ребенку, потому что даже с установщиком нам нужно ограничить дочерние элементы заданием определенного значения только –