Java封装要求字段必须private,通过规范getter/setter提供受控访问;getter需命名正确、返回不可变视图或计算值;setter应含校验逻辑;布尔类型注意is/get前缀区别;关键类建议手写而非依赖Lombok或IDE自动生成。

Java 中封装的核心就是用 private 修饰字段,再通过符合 JavaBeans 规范的 public getter/setter 方法对外提供受控访问。这不是可选技巧,而是框架兼容、团队协作和长期维护的基础要求。
字段必须声明为 private
所有非 final 的数据字段都应加 private 修饰符,禁止使用 public 或包级可见(默认)。
- 基本类型如
private int age; - 引用类型如
private String name;、private List<String> tags; - 布尔类型注意区分:
private boolean active;后续可用isActive();但private Boolean isCompleted;必须用getIsCompleted(),否则 Jackson 等框架可能识别失败
getter 方法要严格遵循命名与行为规范
方法名以 get(或 is 仅限基本 boolean)开头,后接属性名首字母大写,无参数,返回类型与字段一致。
- 例如
private String queue;→public String getQueue() { return queue; } - 对集合类,不能直接返回原始引用:
return Collections.unmodifiableList(this.tags); - 可加入空值检查、格式化或计算逻辑,比如
return this.firstName + " " + this.lastName;(该字段甚至无需真实存在)
setter 方法要支持校验与扩展能力
方法名以 set 开头,后接属性名首字母大写,接收一个同类型参数,返回 void,赋值前应做必要校验。
立即学习“Java免费学习笔记(深入)”;
- 例如
private int age;→public void setAge(int age) { if (age 150) throw new IllegalArgumentException(); this.age = age; } - 敏感字段如
password可不提供 setter,或 getter 返回掩码字符串(如"***") - 只读字段(如订单号)用
private final String orderNo;+ 手动 getter,不写 setter
别依赖 IDE 默认生成而不检查
IntelliJ/Eclipse 一键生成很方便,但需人工核对:
- 确认布尔字段类型是
boolean还是Boolean,避免生成错误前缀 - 集合类 getter 是否返回不可变视图
- Lombok 的
@Data会自动生成,但它不做空值校验、不处理敏感字段、也不适配所有框架场景,关键类建议手写 - 确保类有无参构造器——很多框架(如 Spring、Jackson)反序列化时强依赖它


















