java - 在简单 POJO 中使用私有数据变量
问题描述
最近我正在研究Java封装的概念。我想知道在简单的 POJO 类中将数据变量与公共 setter 方法一起设为私有是否真的有意义?请参考下面的POJO:
public class Employee{
private String id;
private String name;
private String department;
private int age;
public Employee(){
}
public Employee(String id, String name, String department, int age){
this.id = id;
this.name = name;
this.department = department;
this.age = age;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDepartment() {
return department;
}
public void setDepartment(String department) {
this.department = department;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
我的意思是,当我无论如何都可以使用 setter 方法更改它时,为什么我将 name 变量设为私有?
解决方案
在一般情况下,这将是非常基本的
public void setName(String name) {
this.name = name;
}
它与做employee.name = "william hammond"
. 但是想象一下,您想要实现某种private String normalize(string username)
方法,例如您可能将其全部设为小写、检查有效名称或阻止 unicode 条目。如果您name
最初公开,您将让用户这样做employee.name = "whatever they want :) 123"
,您将失去执行该约束的能力。
推荐阅读
- intellij-idea - 运行/调试配置
- php - 使用按钮删除作为两个表组合的行
- angular - Angular Flex 布局表单字段拉伸整个宽度
- python - 使用 cron 安排激活虚拟环境并启动 Django 服务器的 bash 脚本
- r - 删除“.”之后的列标题中的字符
- r - 以特定模式选择行(R,数据框)
- python - 为什么我在使用 Lambda 时会收到此错误?
- eigen3 - 将一个块从 Eigen::Matrix 复制到同一矩阵的另一个块时,会出现什么混叠问题?
- flask - Flask-Dance 在重定向时使用 localhost 而不是域
- reactjs - 如何使用 React 为 Bootstrap 启用切换