为什么在不可变对象中使用getter而不是public字段?

时间:2016-04-21 23:37:29

标签: java immutability final getter

我知道使用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而不仅仅是公开字段?

1 个答案:

答案 0 :(得分:1)

实现getter为将来对Profile类的更改提供了灵活性。如果您的类提供了getter,您可以更改Profile类中的基础私有成员,并且不需要更改类的使用者。您确实希望隐藏类级变量的数据类型,就像要隐藏值一样。