java中boolean类型方法_java类中的布尔(boolean&Boolean)类型字段要注意get方法和字段的命名...

idea会自动生成get/set方法的,

对于布尔类型,要非常注意生成的get方法,到底是is开头还是get开头.

先说结论:

1.Boolean类型,生成的get方法是get开头的(建议使用这个).

2.boolean类型,生成的get方法是is开头的(用这个最好重写getXxx()格式的方法).

3、字段不要以isxxx命名,在springsimpleformController中获取数据时候不能反射到该属性,存数据时候也会遇到问题。具体问题以后遇到再补充。

以下这个例子,可以验证这个区别:

classTestClass{private Boolean daXie;//布尔的包装类

private boolean xiaoXie;//基本类型-布尔//下面是idea自动生成的get/set方法//布尔包装类Boolean的get方法,是正常的get开头的

publicBoolean getDaXie() {returndaXie;

}public voidsetDaXie(Boolean daXie) {this.daXie =daXie;

}//请注意这里,基本类型boolean下自动生成的get方法,是is开头的

public booleanisXiaoXie() {returnxiaoXie;

}public void setXiaoXie(booleanxiaoXie) {this.xiaoXie =xiaoXie;

}

}

从上面的例子可以看出,小写的boolean基本类型作为类的属性时,自动生成的get方法,是is开头的,这样在平时的使用中是无伤大雅的,但考虑到如果这个对象涉及到反射,反射一般会默认调取对象的get方法,对于这个is的情况,是走不通的.

总结:

用到布尔值的属性时,最好统一使用大写的包装类Boolean.

如果用小写的booean基本类型,最好重写get方法,保证是getXxxx的格式即可.

扩展:

一般用到反射的地方有:

1.泛化调用(具体了解可参考dubbo框架)

2.BeanUtils.copyPropertits(a,b);

### MyBatis Plus 中布尔类型字段 Getter 方法实现 在使用 MyBatis Plus 进行数据库操作时,对于布尔类型字段,在 Java 实体中的定义以及其对应的 getter setter 方法有特定的要求。当数据库表中布尔类型字段采用 `is_xxx` 的命名方式时,为了保持一致性遵循编码规范,建议按照如下方式进行实体的设计。 #### 数据库字段到实体属性的映射 假设有一个名为 `user_status` 的表,其中包含一个布尔类型字段 `is_deleted` 表示逻辑删除状态: | 字段名 | 类型 | | ----------- | ------- | | id | INT | | name | VARCHAR | | is_deleted | BOOLEAN | 对应于上述表格结构的 Java 实体应这样设计: ```java import com.baomidou.mybatisplus.annotation.TableField; import lombok.Data; @Data public class UserStatus { private Long id; @TableField("name") private String name; // 使用 deleted 来代替 isDeleted 符合 Lombok 推荐做法 @TableField("is_deleted") private Boolean deleted; } ``` 通过移除前缀 `is_` 并保留基础名称作为成员变量的名字来创建实体对象。这样做不仅提高了代码简洁度也便于后续维护工作[^1]。 #### 自动化生成 Getter/Setter 方法 考虑到手这些访问器函数既耗时又容易出错,推荐借助像 Lombok 这样的第三方库来自动生成所需的 getter/setter 函数。只需添加相应的依赖并声明 `@Data` 注解即可自动完成此过程。需要注意的是,Lombok 默认不会为 booleanBoolean 类型加上 "is" 前缀;因此这里直接命名为 `deleted` 即可让框架正确识别该字段布尔类型,并为其提供合适的访问接口[^2]。 #### 定制 Getter 名称 (如有必要) 尽管大多数情况下默认行为已经足够好用了,但在某些特殊场景下可能仍需定制 getter 方法的行为。此时可以通过覆相应的方法来进行调整。例如,如果你确实希望返回的结果带有 `isXXX()` 形式的 getter,则可以在实体内部显式地定义它而不调用父版本: ```java // 显式指定 getter 方法的形式 @Override public boolean isDeleted() { return this.deleted != null && this.deleted.booleanValue(); } // Setter 可以继续沿用默认形式 public void setDeleted(Boolean deleted) { this.deleted = deleted; } ``` 这种模式允许开发者灵活控制 API 设计的同时仍然享受自动化带来的便利性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值