lombok或jackson是否对 boolean类型且名字开头为is的成员属性存在问题
时间: 2023-06-17 09:02:01 浏览: 65
是的,Lombok和Jackson对于名字以"is"开头的boolean类型成员属性存在问题。
在Lombok中,它会自动生成getter和setter方法,而对于名字以"is"开头的boolean类型成员属性,它会生成以"get"而不是"is"开头的getter方法,导致getter方法的命名不符合JavaBean规范。
在Jackson中,它默认使用getter方法来序列化对象,同样会导致名字以"is"开头的boolean类型成员属性无法被正确序列化。
为了解决这个问题,可以在Lombok中使用@Accessors(chain=true)注解来指定链式调用时使用"is"而不是"get"开头的getter方法,可以在Jackson中使用@JsonProperty注解来指定属性名,或者在对应的getter方法上使用@JsonValue注解来指定序列化时的值。
相关问题
lombok对于使用了@Accessors(chain=true),非is开头的boolean型成员属性生成的getter方法是什么样的?
使用了@Accessors(chain=true)注解后,非is开头的boolean型成员属性生成的getter方法会被生成成以get开头的方法,例如:getXXXX(),而不是以is开头的方法。这是因为@Accessors(chain=true)注解会将getter方法的返回值设为当前类的对象,以便支持链式调用。因此,如果你使用了@Accessors(chain=true)注解,并且使用了非is开头的boolean型成员属性,你需要使用getXXXX()方法来获取属性值。
java类中boolean类型的属性再使用 lombok.Data 后没有get方法
您好!感谢您的提问。关于您的问题,使用 lombok.Data 注解后,可以省略类中属性的 get 和 set 方法的定义,因为 lombok 会自动生成这些方法。如果您使用 lombok.Data 注解后发现 boolean 类型的属性没有生成对应的 get 方法,可能是由于该属性命名不符合 JavaBean 规范所致。JavaBean 规范要求 boolean 类型的属性的 get 方法命名应该以 is 开头,例如属性名为 flag,则 get 方法的命名应该为 isFlag。如果您遵循了这个规范,但是还是没有生成 get 方法,可以尝试升级或更换 lombok 版本,或者在属性上手动添加 Getter 注解,例如:@Getter(onMethod_=@Override) private boolean flag;。希望对您有所帮助!