我有一个问题,关于我不确定的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;
}


我还有另外两个类,InFooOutFoo扩展了FooboundTypeInFoo应该始终是枚举类型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帖子。

09-25 22:24