我有一个问题,关于我不确定的Java属性中的继承/强制某些值,即使我花了很多时间思考它。我将尝试变得尽可能简单。
因此,我有一个抽象类Foo
,其中包含Lombok批注@Data
:
@Data
public abstract class Foo{
private String id;
protected BoundType type;
public abstract void setBoundType(BoundType boundType);
}
这是枚举
BoundType
:public enum BoundType {
IN, OUT;
}
我还有另外两个类,
InFoo
和OutFoo
扩展了Foo
。 boundType
的InFoo
应该始终是枚举类型IN。另一方面,boundType
中的OutFoo
应该始终是枚举类型OUT。例如:@Data
public class InFoo extends Foo{
public void setBoundType() {
//ALWAYS HAS TO BE BoundType.IN
}
}
我该如何执行?不确定如何设计。提前致谢。
最佳答案
确保构造函数为每个子类设置正确的值,然后确保没有设置器,从而无法更改该值。
另外,有关如何忽略BoundType字段的设置器,请参见Omitting one Setter/Getter in Lombok帖子。