java中封装的核心是通过private修饰成员变量并提供public的getter/setter方法:getter以get或is开头、无参、返回字段值(引用类型需防御性复制),setter以set开头、单参、void返回、含参数校验与状态联动。

Java 中封装的核心是通过 private 修饰成员变量,并提供 public 的 Getter(读取)和 Setter(写入)方法来控制访问。这样既保护了数据,又保留了灵活的逻辑扩展能力。
Getter 方法怎么写
Getter 方法用于安全地获取私有字段的值。命名规范是 get + 首字母大写的字段名(布尔类型常用 is + 字段名)。方法必须是 public、非静态、返回对应类型,且不带参数。
- 基本类型直接 return 字段值(如
return age;) - 引用类型建议返回副本或不可变对象,避免外部修改内部状态(例如
return new ArrayList(list);或使用Collections.unmodifiableList(list)) - 可加入简单校验或默认值处理(如字段为 null 时返回空集合)
Setter 方法怎么写
Setter 方法用于可控地设置私有字段的值。命名规范是 set + 首字母大写的字段名。方法必须是 public、非静态、返回 void,且接收一个与字段类型一致的参数。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
- 务必对参数做合法性检查(如非空、范围限制),检查失败可抛出
IllegalArgumentException - 避免直接赋值引用类型对象,应考虑深拷贝或防御性复制(如
this.name = name != null ? name.trim() : "";) - 可在设值后触发其他逻辑(如标记“已修改”、通知监听器等)
用 IDE 自动生成更高效
现代 IDE(如 IntelliJ IDEA、Eclipse)支持一键生成 Getter/Setter。右键 → Generate → Getter and Setter,勾选需要的字段即可。生成的代码符合 JavaBean 规范,也便于后续维护。
- IntelliJ 默认生成格式简洁,支持自定义模板(如添加日志、空值处理)
- 注意检查生成结果:是否遗漏了关键校验?是否对集合类做了防御性复制?
- Lombok 可用
@Getter和@Setter注解替代手写,但需权衡可读性与编译期依赖
什么时候可以不写 Getter/Setter
不是所有 private 字段都必须配齐 Getter 和 Setter。要根据实际需求决定:
- 只读字段:只提供 Getter,不提供 Setter(如 ID、创建时间)
- 只写字段:极少,一般不推荐;若必须,只提供 Setter 并在内部做严格校验
- 完全内部使用、无外部访问需求的字段:可不暴露任何访问方法
- 使用 record(Java 14+)定义不可变数据载体时,自动提供 public 的访问器,无需手动写
封装不是机械套用模板,关键是理解“为什么限制访问”和“在哪儿加控制”。写好 Getter/Setter,就是为对象行为定下第一道边界。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










