开发手册原文:
【强制】POJO 类中布尔类型变量都不要加 is 前缀,否则部分框架解析会引起序列化错误。
反例:定义为基本数据类型 Boolean isDeleted 的属性,它的方法也是 isDeleted(),RPC 框架在反向解析的时候,“误以为”对应的属性名称是 deleted,导致属性获取不到,进而抛出异常。
很容易理解,就是如果用isXxx变量 ,会引起某些框架序列化错误,会引发出潜在的异常。
以下是idea生成的一段get/set代码
public class ShopInBasicInfoDTO {
private String name;
private boolean isDelete;
private boolean delete;
public String getName() {
return name;
}
public boolean isDelete() {
return isDelete;
}
public boolean isDelete() {
return delete;
}
}
变量isDelete 生成的get方法为 isDelete()
变量deleted 生成的get方法为 isDelete()
isDelete和delete生成的方法 都是isDelete()
然后有些框架就会去通过delete变量去找isDelete,然后就找不到了
再看变量 delete
,因为都是 boolean 变量,所有生成的逻辑和 isDelete一样,
根据上述规范,它不会产生找不着值的情况,这也是为什么不建议使用 isXxx
的命名形式。