我知道使用getter并将字段设为私有在一般情况下有很多优点(数据隐藏,解耦,等等,等等,等等)。我问的是与immutable课程有关。
假设我已经创建了一个模型类来存储来自REST响应的数据,例如:
public final class Profile {
private final int id;
private final String name;
private final String info;
private final String location;
private final URI avatar;
private final Gender gender;
// about 10 more fields
}
该类及其字段都是最终的,无法更改或覆盖。每个字段都是不可变类的实例,并在构造函数中进行验证。此外,每个字段都需要公开访问(无数据隐藏)。
在这种情况下,有什么可能的优势可以使类的大小增加三倍,为每个字段添加getter而不仅仅是公开字段?
答案 0 :(得分:1)
实现getter为将来对Profile类的更改提供了灵活性。如果您的类提供了getter,您可以更改Profile类中的基础私有成员,并且不需要更改类的使用者。您确实希望隐藏类级变量的数据类型,就像要隐藏值一样。