我已经阅读了讨论 "Why use getters and setters?" 的 stackoverflow 页面,我一直被使用setter的一些原因说服,例如:后期验证,数据封装等。但是无论如何使用getter的原因是什么?我没有看到任何危害获取私有(private)字段的值,或在获取字段值之前进行验证的原因。 从不使用 getter 并始终使用点表示法获取字段值是否可以?
请您参考如下方法:
如果 Java 类中的给定字段对于读取可见(在表达式的右轴上),那么也必须可以分配该字段(在表达式的 LHS)。例如:
class A {
int someValue;
}
A a = new A();
int value = a.someValue; // if you can do this (potentially harmless)
a.someValue = 10; // then you can also do this (bad)
除了上述问题之外,在类中使用 getter 的一个主要原因是为了保护该类的使用者免受实现细节的影响。 getter 不一定必须简单地返回一个值。它可以返回从 Collection 或其他东西中提取的值。通过使用 getter(和 setter),我们使类的使用者不必担心实现会随时间发生变化。
