问题
Lombok注解所生成的getter、setter与类的Generate工具栏中生成的Getter and Setter方法一致吗
详细问题
譬如如下的类Purchase
,若使用Generate工具栏中生成的Getter and Setter方法,其代码如下
public class Purchase {
private Integer id;
private Integer uId;
private Integer pId;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getuId() {
return uId;
}
public void setuId(Integer uId) {
this.uId = uId;
}
public Integer getpId() {
return pId;
}
public void setpId(Integer pId) {
this.pId = pId;
}
}
笔者之前误以为,若使用Lombok注解所生成的的Getter and Setter方法,其代码同上。
实际情况
事实上,,若使用Lombok注解所生成的的Getter and Setter方法,其代码同下。
package com.iflytek.bms.domain;
public class Purchase {
private Integer id;
private Integer uId;
private Integer pId;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public Integer getUId() {
return uId;
}
public void setUId(Integer uId) {
this.uId = uId;
}
public Integer getPId() {
return pId;
}
public void setPId(Integer pId) {
this.pId = pId;
}
}
原因解释
事实上,使用Generate工具栏生成的Getter和Setter方法与使用Lombok注解生成的方法在命名上是有区别的。这是因为Lombok默认使用驼峰命名规则来生成getter和setter方法,而Generate工具栏生成的方法则与字段名保持一致。
例如在上述的示例代码中,字段uId和pId的首字母小写,并且使用Generate工具栏生成的方法中的方法名也是小写的。而使用Lombok生成的方法中,方法名的首字母大写,符合驼峰命名规则。
这种命名差异可能会导致一些潜在的问题,特别是在使用反射或其他依赖于方法命名的代码中。因此,在使用Lombok生成getter和setter方法时,需要注意方法命名的差异。
如果您希望Lombok生成的方法与Generate工具栏生成的方法具有相同的命名,可以使用Lombok的@Getter和@Setter注解的value属性来显式指定方法名。例如,可以使用@Getter(value = “uId”)来指定生成的getter方法名为getuId(),与Generate工具栏生成的方法相同。
综上所述,Lombok注解生成的getter和setter方法与类的Generate工具栏中生成的Getter and Setter方法在命名上是有差异的。使用Lombok注解时,方法名符合驼峰命名规则,而Generate工具栏生成的方法与字段名保持一致。
参考文献
原因解释参考chatgpt