小伙伴们好呀,今天 4ye 来和大家分享在项目中遇到的一个特别有意思的 ‘bug’ 😄
请看~
题
import lombok.Data;
@Data
public class UserDTO {
private String uName;
private boolean active;
private Boolean closed;
private Boolean isDeleted;
private boolean isActive2;
}
上面的这个 DTO 中,生成的 get/set 方法是啥样子的呢?(注意是 lombok 生成的)
比如
-
是 getUName 还是 getuName
-
是 getActive 还是 isActive
-
是 getClosed 还是 isClosed
-
是 getIsDeleted 还是 isDeleted
-
是 getIsActive2 还是 isActive2
上面是 get 的情况,那 set 呢?
请思考下,接下来的答案可能会和你想的有点出入~
答案如下
是不是有点吃惊 哈哈
先来点简单的~
Boolean
这个就很简单啦,生成的都是我们我们平时用到的样子,过~
boolean
这个 active 是基本数据类型的 boolean ,生成的 get 方法是 isActive , set 方法是 setActive ,很正常🐖
但是你会发现这个 boolean isActive2 很不一样,它生成的 get 方法是 isActive2 , set 方法是 setActive2 。
按理来说应该生成 isIsActive2 方法和 setIsActive2 方法才对呀,结果居然没有!
请问:你觉得这个是 lombok 的锅还是 java 本身的设计 🐷
为了排除嫌疑,我用 idea 自动生成 get/set ,结果它俩居然是一样的,那这个应该就是 java 的某种特点 了
不知道小伙伴们还记得 阿里的 Java 开发手册 没,里面就提到了不要用这个 is 前缀去修饰 pojo 中的 boolean 变量。
</