发布于2026-07-05 阅读(0)
扫一扫,手机访问
Ja va中成员变量的访问,有一条铁律:不能直接对外暴露,得靠封装来兜底。说白了就是三点——变量私有化、用public方法读写、在方法里把校验逻辑加进去。这套组合拳打好了,数据安全才有保障。

private 是封装的第一道防线,也是最关键的门槛。它让变量只能在本类内部被访问,外部既不能直接读,也不能直接改,想动手脚?门儿都没有。
不是所有 private 变量都得配 getter。只暴露那些真正需要被外部读取的字段,其余的藏好。
public String getName() { return name; },简单直接。passwordHash,一般不建议写 getter——避免日志打印时泄露,也防止内存快照暴露数据。getFullName(),可以直接拼接 firstName + lastName,根本不需要对应一个真实变量。List,getter 应该返回不可修改的视图:return Collections.unmodifiableList(items);,防止外部往里乱塞元素。setter 是数据进入对象的入口,也是校验的主战场。千万别让它变成“照单全收”的那种。
public void setAge(int age) { if (age >= 0 && age <= 150) { this.age = age; } else { throw new IllegalArgumentException("年龄非法"); } }setName(String name) 里判断 name != null && !name.trim().isEmpty(),空字符串同样不能放过。setStartDate(Date d) 可以同步检查新日期是否早于已有的 endDate,否则抛异常。封装原理懂了,调用方式也得讲究,否则容易白忙活。
@Data 破坏封装意图,除非你清楚后果并愿意承担风险。new 对象,然后用 setter 赋值,最后用 getter 获取——别试图绕过 setter 直接改字段。this 关键字别漏:当参数名和变量名相同时(比如 setName(String name)),必须用 this.name = name 区分,否则你改的只是参数自己。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8