Java中getter/setter通过public方法间接访问private字段,实现封装:getter以get(或boolean用is)开头、无参、返回值;setter以set开头、单参、void返回;需用this区分参数与字段,并在setter中校验数据合法性。

Java 类与对象通过 getter 和 setter 方法访问私有属性,核心是用公共方法间接操作 private 字段,既保护数据,又保留控制权。不直接读写字段,而是调用命名规范、逻辑可控的方法。
getter 和 setter 的基本写法
getter 方法以 get 开头,无参数,返回对应字段值;setter 方法以 set 开头,带一个同类型参数,用于赋值。字段必须声明为 private 才体现封装意义。
- 布尔类型字段的 getter 可用
isXXX()(如isActive()),这是 JavaBean 规范允许的 - 字段名首字母在方法中大写,例如
private String email;→getEmail()和setEmail(String email) - 方法体内部用
this.xxx = xxx区分形参和字段,避免歧义
为什么要加验证逻辑
setter 不只是简单赋值,更是校验入口。比如年龄不能为负、邮箱需含 @ 符号、用户名不能为空——这些规则统一放在 setter 里,调用方无需重复判断。
Java Maven 项目审查工作流的通用输入处理。当 Java Maven 项目以 ZIP压缩包或 GitLab 仓库 URL 形式提供且需要...时使用。
-
setAge(int age)中可写if (age -
setName(String name)中可写if (name == null || name.trim().isEmpty()) throw new IllegalArgumentException("姓名不能为空"); - getter 也可加逻辑,比如返回计算值(
getFullName()拼接姓和名)或懒加载对象
实际调用方式很简单
创建对象后,像普通方法一样调用即可。不需要知道字段是否私有,也不用关心内部怎么处理。
立即学习“Java免费学习笔记(深入)”;
User user = new User();-
user.setName("张三");—— 走 setter,可能触发空值检查 -
String name = user.getName();—— 走 getter,可能返回缓存值或加工后结果 - 即使后续把
name字段改成数据库查、加日志、换存储结构,调用代码完全不用改
IDE 可自动生成,不必手写
IntelliJ IDEA 或 Eclipse 都支持一键生成:右键类编辑区 → Generate → Getter and Setter → 勾选字段 → 确认。省时且保证命名合规。
- 生成内容严格遵循 JavaBean 规范,方便被 Spring、Jackson 等框架识别和使用
- 如项目允许,可用 Lombok 的
@Getter @Setter注解进一步简化,编译期自动注入方法 - 但调试或需要定制逻辑时,仍建议显式写出 getter/setter,更清晰可控

















