前几天,在网上看到一些评论,说:Lombok的@Data注解,会把所有属性的get/set方法都生成出来,从而把不必要暴露的属性也暴露出来,破坏了对象的封装性
这句话对不对呢?对了一半。确实,@Data会把所有属性的get/set方法都进行生成。但是,破坏封装性是可以避免的,有这样忧虑是因为Lombok只学了一半
其实,我们可以在不想暴露的属性上,添加@Getter或@Setter注解,把它的AccessLevel修改下就行了:
@Data
public class MyData {
private int intVal;
@Getter(AccessLevel.NONE)
private String strVal_NotAllowGet;
@Getter(AccessLevel.PROTECTED)
private double doubleVal_OnlyAllowSubClassGet;
@Setter(AccessLevel.NONE)
private boolean booleanValue_NotAllowSet;
}